class P::Builder

Attributes

template[RW]

Public Class Methods

new(template) click to toggle source
# File lib/p/builder.rb, line 12
def initialize(template)
  @template = template
  copy_template_variables!
end
run!(template) click to toggle source
# File lib/p/builder.rb, line 8
def self.run!(template)
  new(template).run!
end

Public Instance Methods

_binding() click to toggle source
# File lib/p/builder.rb, line 35
def _binding
  binding
end
destination_file(path) click to toggle source
# File lib/p/builder.rb, line 31
def destination_file(path)
  File.join(base_directory, path)
end
run!() click to toggle source
# File lib/p/builder.rb, line 17
def run!
  announce "Generating #{@template.template} project `#{@name}`"

  say "Creating base directory `#{@name}`" do
    FileUtils.mkdir(base_directory)
  end

  eval(IO.read(@template.path))
end
source_file(path) click to toggle source
# File lib/p/builder.rb, line 27
def source_file(path)
  File.join(@template.directory, path)
end

Private Instance Methods

announce(str) click to toggle source
# File lib/p/builder.rb, line 51
def announce(str)
  $stdout.print "= #{str}\n"
end
base_directory() click to toggle source
# File lib/p/builder.rb, line 47
def base_directory
  File.join(Dir.pwd, @name)
end
copy_template_variables!() click to toggle source
# File lib/p/builder.rb, line 41
def copy_template_variables!
  @template.variables.each do |k,v|
    instance_variable_set("@#{k}".to_sym, v)
  end
end
say(str) { |block| ... } click to toggle source
# File lib/p/builder.rb, line 55
def say(str, &block)
  $stdout.print("- #{str}\n")
  yield block
end