Sha256: c335fe2b333d5bbbda254c86eab8541b3147cec333134c5de18327685a81efd6

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

require 'erb'

Dir[File.join(File.dirname(__FILE__), 'assembly_version', '*.rb')].each do |path|
  require path
end

module Rake
  module Funnel
    module Support
      class AssemblyVersionWriter
        include InstantiateSymbol
        instantiate AssemblyVersion

        def initialize(type = :from_version_files, args = {})
          @type = create(type, args)
        end

        def write(target_path, languages = [])
          @type.each do |info|
            source = info[:source]
            version_info = info[:version_info]

            [languages].flatten.each do |language|
              target = target_path.call(language, version_info, source)

              contents = evaluate_erb(language, version_info, target)

              $stderr.print("Writing #{target}\n")
              File.write(target, contents)
            end
          end
        end

        private

        def evaluate_erb(language, version_info, target)
          template = template_for(language)

          render = ERB.new(template, nil, '%<>')
          render.filename = target
          render.result(get_binding(version_info))
        end

        def template_for(language)
          template = File.join(File.dirname(__FILE__), 'assembly_version', 'languages', language.to_s)
          raise "Language is not supported: #{language}" unless File.readable?(template)

          File.read(template)
        end

        def get_binding(version_info)
          binding
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rake-funnel-0.24.0 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.23.0 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.22.3 lib/rake/funnel/support/assembly_version_writer.rb