Class: Veewee::CLI

Inherits:
Thor show all
Defined in:
lib/veewee/cli.rb

Overview

Entrypoint for the Veewee 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:

The above linked classes contain the main documentation for each type of command.

Class Method Summary collapse

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 Veewee::Command::Base or Veewee::Command::GroupBase. Don’t call this method directly, instead call the Veewee::Command::Base.register or Veewee::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/veewee/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