class Gem::Release::Files::Template

def binding

def binding
  context.instance_eval { binding }
end

def context

def context
  Context.new(*data.values)
end

def exists?

def exists?
  File.exist?(target.to_s)
end

def filename

def filename
  File.basename(target)
end

def initialize(source, target, data, opts)

def initialize(source, target, data, opts)
  @source = source
  @target = (FILES[target] || target) % data
  @data   = data
  @opts   = opts
end

def render

def render
  template.result(binding)
end

def template

def template
  ERB.new(File.read(source))
end

def write

def write
  return false if exists?
  FileUtils.mkdir_p(File.dirname(target))
  File.write(target, render)
  FileUtils.chmod('+x', target) if opts[:executable]
  true
end