summaryrefslogtreecommitdiff
path: root/puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb
diff options
context:
space:
mode:
authorvarac <varacanero@zeromail.org>2016-06-09 17:32:16 +0200
committervarac <varacanero@zeromail.org>2016-06-14 12:05:18 +0200
commitbee234db0f65c44840b5a46a2558fbd4b3b7b7dc (patch)
treec6d4b422fcf41b401c3300cd11863f61b9ee61fe /puppet/modules/common/lib/puppet/parser/functions/multi_source_template.rb
parent5e44087aed707e882129c03f24fadf00abbf7e02 (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.rb29
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