Sha256: 2e554ecd5f9a219b6b6442c3f2fa7423de74923b824cc1a1a3d479c4d11caab6

Contents?: true

Size: 1.39 KB

Versions: 5

Compression:

Stored size: 1.39 KB

Contents

require 'erb'

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

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

    def initialize(type = :FromVersionFiles, 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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rake-funnel-0.3.2.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.3.1.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.3.0.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.2.0.pre lib/rake/funnel/support/assembly_version_writer.rb
rake-funnel-0.1.0.pre lib/rake/funnel/support/assembly_version_writer.rb