Class: Bogo::Cli::Setup

Inherits:
Object
  • Object
show all
Defined in:
lib/bogo-cli/setup.rb

Class Method Summary collapse

Class Method Details

.define { ... } ⇒ TrueClass

Wrap parsing setup for consistent usage

Yields:

  • CLI setup block

Returns:

  • (TrueClass)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/bogo-cli/setup.rb', line 29

def define(&block)
  begin
    result = Parser.parse(help: true) do
      instance_exec(&block)
    end
    puts result.help
    exit 255
  rescue StandardError, ScriptError => err
    err_msg = err.message
    if err.respond_to?(:original) && err.original
      err_msg << "\n#{err.original.message}"
    end
    output_error err_msg
    if ENV["DEBUG"]
      output_debug "Stacktrace: #{err.class}: " \
                   "#{err.message}\n#{err.backtrace.join("\n")}"
      if err.respond_to?(:original) && err.original
        msg = "Original Stacktrace: #{err.original.class}: " \
        "#{err.original.message}\n#{err.original.backtrace.join("\n")}"
        output_debug msg
      end
    end
    exit err.respond_to?(:exit_code) ? err.exit_code : -1
  end
  true
end

.output_debug(string) ⇒ Object

Write debug message to UI. Uses formatted ui if available and falls back to stderr.

Parameters:

  • string (String)


72
73
74
75
76
77
78
# File 'lib/bogo-cli/setup.rb', line 72

def output_debug(string)
  if Command.ui
    Command.ui.debug string
  else
    $stderr.puts "DEBUG: #{string}"
  end
end

.output_error(string) ⇒ Object

Write error message to UI. Uses formatted ui if available and falls back to stderr.

Parameters:

  • string (String)


60
61
62
63
64
65
66
# File 'lib/bogo-cli/setup.rb', line 60

def output_error(string)
  if Command.ui
    Command.ui.error string
  else
    $stderr.puts "ERROR: #{string}"
  end
end