Class: P::Actions::TemplateFile

Inherits:
Object
  • Object
show all
Defined in:
lib/p/actions/template_file.rb

Instance Method Summary collapse

Constructor Details

#initialize(builder, source, destination) ⇒ TemplateFile

Returns a new instance of TemplateFile.



6
7
8
9
10
# File 'lib/p/actions/template_file.rb', line 6

def initialize(builder, source, destination)
  @builder = builder
  @source = source
  @destination = destination
end

Instance Method Details

#run!Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/p/actions/template_file.rb', line 20

def run!
  unless File.exists?(@source)
    raise(P::FileNotFound, "missing template file `#{@source}`") 
  end

  if File.extname(@source) == ".erb"
    content = ERB.new(IO.read(@source)).result(@builder._binding)
    IO.write(@destination, content)
  else
    FileUtils.cp(@source, @destination)
  end
end

#source(src = nil) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/p/actions/template_file.rb', line 12

def source(src = nil)
  if src.nil?
    @source
  else
    @source = @builder.source_file(src)
  end
end