diff --git a/src/cli/cli_helper.rb b/src/cli/cli_helper.rb index dbb144560c..b298599492 100644 --- a/src/cli/cli_helper.rb +++ b/src/cli/cli_helper.rb @@ -110,9 +110,11 @@ module CLIHelper ANSI_RED="\33[31m" ANSI_GREEN="\33[32m" ANSI_RESET="\33[0m" + ANSI_YELLOW="\33[33m" - OK_STATES=%w{runn rdy on} - BAD_STATES=%w{fail err err} + OK_STATES=%w{runn rdy on configured} + BAD_STATES=%w{fail err err error} + REGULAR_STATES=%w{pending} def CLIHelper.color_state(stat) if $stdout.tty? @@ -121,6 +123,8 @@ module CLIHelper ANSI_GREEN+stat+ANSI_RESET when *BAD_STATES ANSI_RED+stat+ANSI_RESET + when *REGULAR_STATES + ANSI_YELLOW+stat+ANSI_RESET else stat end @@ -270,7 +274,7 @@ module CLIHelper def print_table(data, options) if !options[:csv] && !options[:noheader] - CLIHelper.print_header(header_str) + CLIHelper.print_header(header_str) end data ? print_data(data, options) : puts diff --git a/src/cli/command_parser.rb b/src/cli/command_parser.rb index 78978a9fc6..18ecaa1d7d 100644 --- a/src/cli/command_parser.rb +++ b/src/cli/command_parser.rb @@ -74,7 +74,7 @@ module CommandParser instance_eval(&block) addons = Dir["#{OpenNebulaHelper::CLI_ADDONS_LOCATION}/#{File.basename($0)}/*"] - if defined?(addons) and !addons.nil? + if defined?(addons) and !addons.nil? addons.each do |addon_path| addon_code = File.read(addon_path) instance_eval(addon_code) @@ -280,6 +280,10 @@ module CommandParser # end # def command(name, desc, *args_format, &block) + if name.is_a? (Array) + name = name.join(" ").to_sym + end + cmd = Hash.new cmd[:desc] = desc cmd[:arity] = 0 @@ -432,8 +436,17 @@ module CommandParser comm = @main elsif if @args[0] && !@args[0].match(/^-/) - @comm_name = comm_name = @args.shift.to_sym - comm = @commands[comm_name] + while comm.nil? and @args.size > 0 do + current = @args.shift + + if comm_name.empty? + @comm_name = comm_name = "#{current}".to_sym + else + @comm_name = comm_name = "#{comm_name} #{current}".to_sym + end + + comm = @commands[comm_name] + end end end