From f77304b703cbaaf5b46b974a0c80b73cece4a2aa Mon Sep 17 00:00:00 2001 From: Daniel Pittman Date: Fri, 22 Apr 2011 11:53:30 -0700 Subject: (#7157) Return a non-zero exit code on face failure. When a face or action fails we should exit non-zero on the CLI to signal this to our caller. "Fails" is defined as "raises an exception"; we don't treat any return value as a significant failure. Reviewed-By: Jesse Wolf --- lib/puppet/application/face_base.rb | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'lib/puppet/application') diff --git a/lib/puppet/application/face_base.rb b/lib/puppet/application/face_base.rb index 7bebd18bb..257d51f75 100644 --- a/lib/puppet/application/face_base.rb +++ b/lib/puppet/application/face_base.rb @@ -27,13 +27,6 @@ class Puppet::Application::FaceBase < Puppet::Application attr_accessor :face, :action, :type, :arguments, :render_as - attr_writer :exit_code - - # This allows you to set the exit code if you don't want to just exit - # immediately but you need to indicate a failure. - def exit_code - @exit_code || 0 - end def render(result) format = render_as || action.render_as || :for_humans @@ -198,19 +191,28 @@ class Puppet::Application::FaceBase < Puppet::Application def main + status = false + # Call the method associated with the provided action (e.g., 'find'). if @action - result = @face.send(@action.name, *arguments) - puts render(result) unless result.nil? + begin + result = @face.send(@action.name, *arguments) + puts render(result) unless result.nil? + status = true + rescue Exception => detail + puts detail.backtrace if Puppet[:trace] + Puppet.err detail.to_s + end else if arguments.first.is_a? Hash - puts "#{@face} does not have a default action" + puts "#{face} does not have a default action" else - puts "#{@face} does not respond to action #{arguments.first}" + puts "#{face} does not respond to action #{arguments.first}" end puts Puppet::Face[:help, :current].help(@face.name, *arguments) end - exit(exit_code) + + exit status end end -- cgit