Module: Consist::ThorExt::Start

Included in:
CLI
Defined in:
lib/consist/thor_ext.rb

Overview

Configures Thor to behave more like a typical CLI, with better help and error handling.

  • Passing -h or –help to a command will show help for that command.

  • Unrecognized options will be treated as errors (instead of being silently ignored).

  • Error messages will be printed in red to stderr, without stack trace.

  • Full stack traces can be enabled by setting the VERBOSE environment variable.

  • Errors will cause Thor to exit with a non-zero status.

To take advantage of this behavior, your CLI should subclass Thor and extend this module.

class CLI < Thor
  extend ThorExt::Start
end

Start your CLI with:

CLI.start

In tests, prevent Kernel.exit from being called when an error occurs, like this:

CLI.start(args, exit_on_failure: false)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



26
27
28
29
# File 'lib/consist/thor_ext.rb', line 26

def self.extended(base)
  super
  base.check_unknown_options!
end

Instance Method Details

#start(given_args = ARGV, config = {}) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/consist/thor_ext.rb', line 31

def start(given_args=ARGV, config={})
  config[:shell] ||= Thor::Base.shell.new
  handle_help_switches(given_args) do |args|
    dispatch(nil, args, nil, config)
  end
rescue StandardError => e
  handle_exception_on_start(e, config)
end