summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/functions/template.rb
blob: 6fa1103329ec71764852e7cfea1660ff7cc54801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Puppet::Parser::Functions::newfunction(:template, :type => :rvalue, :doc =>
  "Evaluate a template and return its value.  See
  [the templating docs](http://docs.puppetlabs.com/guides/templating.html) for 
  more information.
  
  Note that if multiple templates are specified, their output is all
  concatenated and returned as the output of the function.") do |vals|
    require 'erb'

    vals.collect do |file|
      # Use a wrapper, so the template can't get access to the full
      # Scope object.
      debug "Retrieving template #{file}"

      wrapper = Puppet::Parser::TemplateWrapper.new(self)
      wrapper.file = file
      begin
        wrapper.result
      rescue => detail
        raise Puppet::ParseError,
          "Failed to parse template #{file}: #{detail}"
      end
    end.join("")
end