class Raketary::Cmd
@author Jonathan Bradley Whited @since 0.1.0
Attributes
app[R]
leftover_args[R]
name[R]
sub_cmds[R]
Public Class Methods
new(app,name)
click to toggle source
# File lib/raketary/cmd.rb, line 27 def initialize(app,name) @app = app @leftover_args = [] @name = name @sub_cmds = {} end
Public Instance Methods
parse!(is_app=false) { |op| ... }
click to toggle source
# File lib/raketary/cmd.rb, line 34 def parse!(is_app=false) parser = OptionParser.new do |op| op.program_name = app.name op.version = app.version op.banner = '' op.separator '' if is_app if !@sub_cmds.empty? op.separator is_app ? 'Commands:' : "[#{@name}] Commands:" @sub_cmds.each do |name,sub_cmd| name_desc = ''.dup name_desc << op.summary_indent name_desc << ("%-#{op.summary_width}s #{sub_cmd.desc}" % [name]) op.separator name_desc end op.separator '' end op.separator is_app ? 'Options:' : "[#{@name}] Options:" op.on_tail('-h','--help','show this help') yield op end options = {} @leftover_args = parser.order!(app.args,into: options).dup options.each_key do |key| if (key_s = key.to_s).include?('-') options[key_s.gsub('-','_').to_sym] = options[key] options.delete(key) end end app.options.merge!(options) app.parsers << parser if !app.args.nil? && !(sub_cmd_name = app.args.shift).nil? if !(sub_cmd = @sub_cmds[sub_cmd_name]).nil? begin sub_cmd.cmd_class.new(app,sub_cmd_name).run rescue DoNotRunCmdError => e app.soft_error = e.soft_msg end end end return parser end
run()
click to toggle source
# File lib/raketary/cmd.rb, line 88 def run raise DoNotRunCmdError if app.options[:help] || app.ran_cmd? end