lib/methadone/exit_now.rb in methadone-1.0.0.rc5 vs lib/methadone/exit_now.rb in methadone-1.0.0.rc6
- old
+ new
@@ -1,25 +1,40 @@
module Methadone
+ # Provides #exit_now! and #help_now!. You might mix this into your business logic classes if they will
+ # need to exit the program with a human-readable error message.
module ExitNow
def self.included(k)
k.extend(self)
end
# Call this to exit the program immediately
# with the given error code and message.
#
# +exit_code+:: exit status you'd like to exit with
# +message+:: message to display to the user explaining the problem
#
- # Also can be used without an exit code like so:
+ # If +exit_code+ is a String and +message+ is omitted, +exit_code+ will be used as the message
+ # and the actual exit code will be 1.
#
- # exit_now!("Oh noes!")
+ # === Examples
#
- # In this case, it's equivalent to <code>exit_now!(1,"Oh noes!")</code>.
+ # exit_now!(4,"Oh noes!")
+ # # => exit app with status 4 and show the user "Oh noes!" on stderr
+ # exit_now!("Oh noes!")
+ # # => exit app with status 1 and show the user "Oh noes!" on stderr
+ # exit_now!(4)
+ # # => exit app with status 4 and dont' give the user a message (how rude of you)
def exit_now!(exit_code,message=nil)
if exit_code.kind_of?(String) && message.nil?
raise Methadone::Error.new(1,exit_code)
else
raise Methadone::Error.new(exit_code,message)
end
+ end
+
+ # Exit the program as if the user made an error invoking your app, providing
+ # them the message as well as printing the help. This is useful if
+ # you have complex UI validation that can't be done by OptionParser.
+ def help_now!(message)
+ raise OptionParser::ParseError.new(message)
end
end
end