diff options
author | varac <varacanero@zeromail.org> | 2016-06-09 17:32:16 +0200 |
---|---|---|
committer | varac <varacanero@zeromail.org> | 2016-06-14 12:05:18 +0200 |
commit | bee234db0f65c44840b5a46a2558fbd4b3b7b7dc (patch) | |
tree | c6d4b422fcf41b401c3300cd11863f61b9ee61fe /puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb | |
parent | 5e44087aed707e882129c03f24fadf00abbf7e02 (diff) |
git subrepo clone https://leap.se/git/puppet_common puppet/modules/common
subrepo:
subdir: "puppet/modules/common"
merged: "ae14962"
upstream:
origin: "https://leap.se/git/puppet_common"
branch: "master"
commit: "ae14962"
git-subrepo:
version: "0.3.0"
origin: "https://github.com/ingydotnet/git-subrepo.git"
commit: "cb2995b"
Diffstat (limited to 'puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb')
-rw-r--r-- | puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb b/puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb new file mode 100644 index 00000000..e0753205 --- /dev/null +++ b/puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb @@ -0,0 +1,29 @@ +module Puppet::Parser::Functions + require 'erb' + + newfunction(:multi_source_template, :type => :rvalue) do |args| + contents = nil + environment = compiler.environment + sources = args + + sources.each do |file| + Puppet.debug("Looking for #{file} in #{environment}") + if filename = Puppet::Parser::Files.find_template(file, environment.to_s) + wrapper = Puppet::Parser::TemplateWrapper.new(self) + wrapper.file = file + + begin + contents = wrapper.result + rescue => detail + raise Puppet::ParseError, "Failed to parse template %s: %s" % [file, detail] + end + + break + end + end + + raise Puppet::ParseError, "multi_source_template: No match found for files: #{sources.join(', ')}" if contents == nil + + contents + end +end |