lib/core/util/cli.rb in nucleon-0.1.1 vs lib/core/util/cli.rb in nucleon-0.1.2

- old
+ new

@@ -33,11 +33,11 @@ attr_accessor :arguments attr_accessor :processed #--- - def initialize(args, banner = '', help = '') + def initialize(args, banner = '', help = '', split_help = false) @parser = OptionParser.new self.options = {} self.arguments = {} @@ -48,11 +48,11 @@ self.banner = banner self.help = help yield(self) if block_given? - parse_command(args) + parse_command(args, split_help) end #--- def self.split(args, banner, separator = '') @@ -68,11 +68,11 @@ break end end main_args = args.dup if main_args.nil? - results = [ Parser.new(main_args, banner, separator) ] + results = [ Parser.new(main_args, banner, separator, true) ] if sub_command results << [ sub_command, sub_args ] end @@ -101,11 +101,11 @@ end end #--- - def parse_command(args) + def parse_command(args, split_help = false) args = args.dup error = false self.processed = false @@ -115,17 +115,29 @@ ) option_str(:encoded_params, false, '--encoded STR', 'nucleon.core.util.cli.options.encoded' ) - parser.on_tail('-h', '--help', CLI.message('nucleon.core.util.cli.options.help')) do - options[:help] = true - return + if split_help + parser.on_tail('-h', CLI.message('nucleon.core.util.cli.options.short_help')) do + options[:help] = true + end + parser.on_tail('--help', CLI.message('nucleon.core.util.cli.options.extended_help')) do + options[:help] = true + options[:extended_help] = true + end + else + parser.on_tail('-h', '--help', CLI.message('nucleon.core.util.cli.options.short_help')) do + options[:help] = true + end end parser.parse!(args) - + + # Now we can act on options given Nucleon.log_level = options[:log_level] if options[:log_level] + return if options[:help] + parse_encoded remaining_args = args.dup arg_messages = []