From 3d395e857b588a8832430bf450c45b2fc37765e4 Mon Sep 17 00:00:00 2001 From: Paul Lathrop Date: Tue, 6 Apr 2010 18:19:34 -0700 Subject: Fixes #3295 - generate() now sets the working directory to the directory containing the specified command. Also adds rspec tests for generate(). --- lib/puppet/parser/functions/generate.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/functions/generate.rb b/lib/puppet/parser/functions/generate.rb index 18fe883b4..55161df1a 100644 --- a/lib/puppet/parser/functions/generate.rb +++ b/lib/puppet/parser/functions/generate.rb @@ -1,6 +1,6 @@ # Runs an external command and returns the results Puppet::Parser::Functions::newfunction(:generate, :type => :rvalue, - :doc => "Calls an external command on the Puppet master and returns + :doc => "Calls an external command on the Puppet master and returns the results of the command. Any arguments are passed to the external command as arguments. If the generator does not exit with return code of 0, the generator is considered to have failed and a parse error is @@ -26,7 +26,9 @@ Puppet::Parser::Functions::newfunction(:generate, :type => :rvalue, end begin - output = Puppet::Util.execute(args) + Dir.chdir(File.dirname(args[0])) do + output = Puppet::Util.execute(args) + end rescue Puppet::ExecutionFailure => detail raise Puppet::ParseError, "Failed to execute generator %s: %s" % [args[0], detail] -- cgit