Class: MelissaData::CLI
- Inherits:
-
Thor
- Object
- Thor
- MelissaData::CLI
- Defined in:
- lib/melissadata/cli.rb
Overview
Entrypoint for the MelissaData CLI. This class should never be initialized directly (like a typical Thor class). Instead, use Environment#cli to invoke the CLI.
# Defining Custom CLI Commands
If you’re looking to define custom CLI commands, then look at one of the two following classes:
-
MelissaData::Command::Base - Implementing a single command such as ‘melissadata up`, e.g. one without subcommands. Also take a look at Command::NamedBase.
-
Command::GroupBase - Implementing a command with subcommands, such as ‘melissadata box`, which has the `list`, `add`, etc. subcommands.
The above linked classes contain the main documentation for each type of command.
Class Method Summary collapse
-
.register(klass, name, usage, description, opts = nil) ⇒ Object
Registers the given class with the CLI so it can be accessed.
Class Method Details
.register(klass, name, usage, description, opts = nil) ⇒ Object
Registers the given class with the CLI so it can be accessed. The class must be a subclass of MelissaData::Command::Base Don’t call this method directly, instead call the MelissaData::Command::Base.register
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/melissadata/cli.rb', line 30 def self.register(klass, name, usage, description, opts=nil) opts ||= {} # A subclass of Base is a single command, since it # is invoked as a whole (as Thor::Group) desc usage, description, opts define_method(name) { |*args| invoke klass, args } if opts[:alias] # Alises are defined for this command, so properly alias the # newly defined method/subcommand: map opts[:alias] => name end end |