Class: Vagrant::CLI
- Inherits:
-
Thor
- Object
- Thor
- Vagrant::CLI
- Defined in:
- lib/vagrant/cli.rb
Overview
Entrypoint for the Vagrant 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:
- Vagrant::Command::Base - Implementing a single command such as
vagrant up
, e.g. one without subcommands. Also take a look at Vagrant::Command::NamedBase. - Vagrant::Command::GroupBase - Implementing a command with subcommands, such as
vagrant box
, which has thelist
,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 either Vagrant::Command::Base or Vagrant::Command::GroupBase. Don't call this method directly, instead call the Vagrant::Command::Base.register or Vagrant::Command::GroupBase.register methods.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/vagrant/cli.rb', line 33 def self.register(klass, name, usage, description, opts=nil) opts ||= {} if klass <= Command::GroupBase # A subclass of GroupBase is a subcommand, since it contains # many smaller commands within it. desc usage, description, opts subcommand name, klass elsif klass <= Command::Base # 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 } end if opts[:alias] # Alises are defined for this command, so properly alias the # newly defined method/subcommand: map opts[:alias] => name end end |