lib/core/util/cli.rb in nucleon-0.2.8 vs lib/core/util/cli.rb in nucleon-0.2.9

- old
+ new

@@ -56,24 +56,43 @@ end #--- def self.split(args, banner, separator = '') + check_args = [] main_args = nil sub_command = nil sub_args = [] - args.each_index do |index| - if !args[index].start_with?('-') - main_args = args[0, index] - sub_command = args[index] - sub_args = args[index + 1, args.length - index + 1] + # Log level gets processed in main args so we can log executable init + parse_log_value = false + + args.each do |arg| + if arg =~ /^\-\-log_level(?=\=(.*))?/ + if $1 + Nucleon.log_level = $1 + else + parse_log_value = true + end + elsif parse_log_value + Nucleon.log_level = arg + parse_log_value = false + else + check_args << arg + end + end + + check_args.each_index do |index| + if !check_args[index].start_with?('-') + main_args = check_args[0, index] + sub_command = check_args[index] + sub_args = check_args[index + 1, check_args.length - index + 1] break end end - main_args = args.dup if main_args.nil? + main_args = check_args.dup if main_args.nil? results = [ Parser.new(main_args, banner, separator, true) ] if sub_command results << [ sub_command, sub_args ] end @@ -119,18 +138,22 @@ option_bool(:version, false, '--version', 'nucleon.core.util.cli.options.version' ) - option_bool(:color, true, - '--[no]-color', + option_bool(:color, Util::Console.use_colors, + '--[no-]color', 'nucleon.core.util.cli.options.color' ) option_str(:log_level, nil, '--log_level STR', 'nucleon.core.util.cli.options.log_level' ) + option_str(:exec_dir, nil, + '--exec_dir STR', + 'nucleon.core.util.cli.options.exec_dir' + ) option_str(:encoded_params, false, '--encoded STR', 'nucleon.core.util.cli.options.encoded' ) if split_help @@ -160,14 +183,16 @@ if options[:version] puts version exit 0 end + if options[:exec_dir] + Dir.chdir(options[:exec_dir]) + end + return if options[:help] parse_encoded - - Nucleon.log_level = options[:log_level] if options[:log_level] self.extra = normalize_extra_options(extra_args) unless extra_args.empty? remaining_args = args.dup arg_messages = []