#!/usr/bin/ruby module Puppet::Parser::Functions newfunction(:concatenate, :type => :rvalue) do |args| directory = args[0] # optional argument to add include messages # comment = args[1] # initialize content content = "" Dir[ "#{directory}/*" ].each do |file| if file =~ /\d\d_\S+/ # get class name file_class = file.sub(/.*\d\d_(\S+)/,'\1') # check if class is defined method = Puppet::Parser::Functions.function(:defined) if send(method,file_class) # include file File.open(file, "r") do |infile| while (line = infile.gets) content << "#{line}" end end else puts "I: Class #{file_class} is not defined. Not including #{file}" end else puts "W: #{file} does not have a correct name and will not be included." end end return content end end