All pastes #509444 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-05-25 13:43 UTC
rendered paste body
#!/usr/bin/ruby

module Puppet::Parser::Functions
  newfunction(:template_with_check, :type => :rvalue) do |args|
        tmpl = args[0]
        checkscript = args[1]
#       tmpfile = generate("mktemp /tmp/template.XXXXXX")
        tmpfile = File.new("/tmp/template.tmp", 'w+')

        # Retrieve the internal method name
        method_template = Puppet::Parser::Functions.function(:template)

        # Call it with the template name
        content = send(method_template, tmpl)

        # Test content in a temporary file
        tmpfile.write(content)
        tmpfile.close
        checkcmd=checkscript+" "+tmpfile.path
        system(checkcmd)
        File.delete(tmpfile.path)
        if $?==0
               return(content)
        end
        raise Puppet::ParseError, "could not validate content with command "+checkscript
  end
end