Class: Inch::CLI::Command::Base Abstract
- Inherits:
-
Object
- Object
- Inch::CLI::Command::Base
- Includes:
- TraceHelper
- Defined in:
- lib/inch/cli/command/base.rb
Overview
Subclass and override #run to implement a new command
This was adapted from YARD github.com/lsegal/yard/blob/master/lib/yard/cli/command.rb
Abstract base class for CLI controller objects
Constant Summary collapse
- EXIT_STATUS_SUCCESS =
0
Instance Attribute Summary collapse
- #codebase ⇒ Codebase::Proxy readonly
Class Method Summary collapse
-
.register_command_as(name, default = false) ⇒ void
Registers the current Command in the CommandParser.
-
.run(*args) ⇒ Command::Base
Helper method to run an instance with the given
args
.
Instance Method Summary collapse
-
#description ⇒ String
Returns a description of the command.
-
#exit_status ⇒ Fixnum
Returns the exit status of the running command.
-
#initialize(kwargs = {}) ⇒ Base
constructor
A new instance of Base.
-
#name ⇒ String
Returns the name of the command by which it is referenced in the command list.
-
#run(*_args) ⇒ Object
abstract
Runs the command with the given
args
. -
#usage ⇒ String
Returns a description of the command’s usage pattern.
Methods included from TraceHelper
Constructor Details
#initialize(kwargs = {}) ⇒ Base
Returns a new instance of Base.
65 66 67 68 |
# File 'lib/inch/cli/command/base.rb', line 65 def initialize(kwargs = {}) @ui = kwargs[:ui] if kwargs[:ui] end |
Instance Attribute Details
#codebase ⇒ Codebase::Proxy (readonly)
43 44 45 |
# File 'lib/inch/cli/command/base.rb', line 43 def codebase @codebase end |
Class Method Details
.register_command_as(name, default = false) ⇒ void
This method returns an undefined value.
Registers the current Command in the CommandParser
60 61 62 63 |
# File 'lib/inch/cli/command/base.rb', line 60 def self.register_command_as(name, default = false) CLI::CommandParser.default_command = name if default CLI::CommandParser.commands[name] = self end |
.run(*args) ⇒ Command::Base
Helper method to run an instance with the given args
49 50 51 52 53 54 |
# File 'lib/inch/cli/command/base.rb', line 49 def self.run(*args) kwargs = args.last.is_a?(Hash) ? args.pop : {} command = new(kwargs) command.run(*args) command end |
Instance Method Details
#description ⇒ String
Returns a description of the command
73 74 75 |
# File 'lib/inch/cli/command/base.rb', line 73 def description '' end |
#exit_status ⇒ Fixnum
Returns the exit status of the running command. This can be overridden to customize exit statusses.
81 82 83 |
# File 'lib/inch/cli/command/base.rb', line 81 def exit_status EXIT_STATUS_SUCCESS end |
#name ⇒ String
Returns the name of the command by which it is referenced in the command list
89 90 91 92 93 |
# File 'lib/inch/cli/command/base.rb', line 89 def name CommandParser.commands.each do |name, klass| return name if klass == self.class end end |
#run(*_args) ⇒ Object
Override with implementation
Runs the command with the given args
100 101 102 |
# File 'lib/inch/cli/command/base.rb', line 100 def run(*_args) fail NotImplementedError end |
#usage ⇒ String
Returns a description of the command’s usage pattern
107 108 109 |
# File 'lib/inch/cli/command/base.rb', line 107 def usage "Usage: inch #{name} [options]" end |