From 4fa54d02a2806e8fde54da9bb7e4d6735b3cffe4 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Tue, 22 Feb 2011 23:49:01 -0800 Subject: Adding render and exit_code override support This is mostly in response to feature requests from Dan. Signed-off-by: Luke Kanies --- lib/puppet/application/interface_base.rb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'lib/puppet') diff --git a/lib/puppet/application/interface_base.rb b/lib/puppet/application/interface_base.rb index 9e8ea9948..49c2e9622 100644 --- a/lib/puppet/application/interface_base.rb +++ b/lib/puppet/application/interface_base.rb @@ -33,12 +33,26 @@ class Puppet::Application::InterfaceBase < Puppet::Application attr_accessor :interface, :type, :verb, :name, :arguments, :format + 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 main # Call the method associated with the provided action (e.g., 'find'). - result = interface.send(verb, name, *arguments) + if result = interface.send(verb, name, *arguments) + puts render(result) + end + exit(exit_code) + end + + # Override this if you need custom rendering. + def render(result) render_method = Puppet::Network::FormatHandler.format(format).render_method - puts result.send(render_method) if result + result.send(render_method) end def setup -- cgit