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 = []