Module: CLI::Kit
- Defined in:
- lib/cli/kit.rb,
lib/cli/kit/ini.rb,
lib/cli/kit/util.rb,
lib/cli/kit/config.rb,
lib/cli/kit/logger.rb,
lib/cli/kit/system.rb,
lib/cli/kit/support.rb,
lib/cli/kit/version.rb,
lib/cli/kit/autocall.rb,
lib/cli/kit/executor.rb,
lib/cli/kit/resolver.rb,
lib/cli/kit/levenshtein.rb,
lib/cli/kit/base_command.rb,
lib/cli/kit/error_handler.rb,
lib/cli/kit/command_registry.rb,
lib/cli/kit/support/test_helper.rb,
lib/cli/kit/support/test_helper.rb
Defined Under Namespace
Modules: Autocall, Levenshtein, Support, System, Util Classes: BaseCommand, CommandRegistry, Config, ErrorHandler, Executor, Ini, Logger, Resolver
Constant Summary collapse
- EXIT_FAILURE_BUT_NOT_BUG =
30- EXIT_BUG =
1- EXIT_SUCCESS =
0- GenericAbort =
Abort, Bug, AbortSilent, and BugSilent are four ways of immediately bailing on command-line execution when an unrecoverable error occurs.
Note that these don’t inherit from StandardError, and so are not caught by a bare ‘rescue => e`.
-
Abort prints its message in red and exits 1;
-
Bug additionally submits the exception to Bugsnag;
-
AbortSilent and BugSilent do the same as above, but do not print
messages before exiting.
Treat these like panic() in Go:
* Don't rescue them. Use a different Exception class if you plan to recover; * Provide a useful message, since it will be presented in brief to the user, and will be useful for debugging. * Avoid using it if it does actually make sense to recover from an error.Additionally:
* Do not subclass these. * Only use AbortSilent or BugSilent if you prefer to print a more contextualized error than Abort or Bug would present to the user. * In general, don't attach a message to AbortSilent or BugSilent. * Never raise GenericAbort directly. * Think carefully about whether Abort or Bug is more appropriate. Is this a bug in the tool? Or is it just user error, transient network failure, etc.? * One case where it's ok to rescue (cli-kit internals or tests aside): 1. rescue Abort or Bug 2. Print a contextualized error message 3. Re-raise AbortSilent or BugSilent respectively. -
Class.new(Exception)
- Abort =
Class.new(GenericAbort)
- Bug =
Class.new(GenericAbort)
- BugSilent =
Class.new(GenericAbort)
- AbortSilent =
Class.new(GenericAbort)
- VERSION =
"3.1.0"