class Rake::Funnel::Support::AssemblyVersionWriter

Public Class Methods

new(type = :from_version_files, args = {}) click to toggle source
# File lib/rake/funnel/support/assembly_version_writer.rb, line 16
def initialize(type = :from_version_files, args = {})
  @type = create(type, args)
end

Public Instance Methods

write(target_path, languages = []) click to toggle source
# File lib/rake/funnel/support/assembly_version_writer.rb, line 20
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 Instance Methods

evaluate_erb(language, version_info, target) click to toggle source
# File lib/rake/funnel/support/assembly_version_writer.rb, line 38
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
get_binding(version_info) click to toggle source
# File lib/rake/funnel/support/assembly_version_writer.rb, line 53
def get_binding(version_info)
  binding
end
template_for(language) click to toggle source
# File lib/rake/funnel/support/assembly_version_writer.rb, line 46
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