Method: Morpheus::Cli::CliRegistry.parse_command_result

Defined in:
lib/morpheus/cli/cli_registry.rb

.parse_command_result(cmd_result) ⇒ Array

parse any object into a command result [exit_code, error] 0 means success. This treats nil, true, or an object success. 0 or

Returns:

  • (Array)

    exit_code, error. Success returns [0, nil].



232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# File 'lib/morpheus/cli/cli_registry.rb', line 232

def parse_command_result(cmd_result)
  exit_code, err = nil, nil
  if cmd_result.is_a?(Array)
    exit_code = cmd_result[0] || 0
    err = cmd_result[1]
  elsif cmd_result.is_a?(Hash)
    exit_code = cmd_result[:exit_code] || 0
    err = cmd_result[:error] || cmd_result[:err]
  elsif cmd_result == nil || cmd_result == true
    exit_code = 0
  elsif cmd_result == false
    exit_code = 1
  elsif cmd_result.is_a?(Integer)
    exit_code = cmd_result
  elsif cmd_result.is_a?(Float)
    exit_code = cmd_result.to_i
  elsif cmd_result.is_a?(String)
    exit_code = cmd_result.to_i
  else
    if cmd_result.respond_to?(:to_i)
      exit_code = cmd_result.to_i
    else
      # happens for aliases right now.. and execution flow probably, need to handle Array
      # uncomment to track them down, proceed with exit 0 for now
      #Morpheus::Logging::DarkPrinter.puts "debug: command #{command_name} produced an unexpected result: (#{cmd_result.class}) #{cmd_result}" if Morpheus::Logging.debug?
      exit_code = 0
    end
  end
  return exit_code, err
end