Sha256: c494e8ba64c35623b8b3446b67df337d43afc3284d5d69404a1798550f65c910

Contents?: true

Size: 1.48 KB

Versions: 8

Compression:

Stored size: 1.48 KB

Contents

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)

              Rake.rake_output_message("Writing #{target}")
              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

8 entries across 8 versions & 1 rubygems

Version Path
rake-funnel-0.18.0 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.17.0 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.16.1 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.16.0 lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.15.0.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.14.0.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.13.0.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.12.0.pre lib/rake/funnel/support/assembly_version_writer.rb