Module: Lightning::Commands
- Extends:
- Lightning::Commands, Lightning::CommandsUtil
- Defined in:
- lib/lightning/commands.rb,
lib/lightning/commands/core.rb,
lib/lightning/commands/bolt.rb,
lib/lightning/commands/function.rb,
lib/lightning/commands/shell_command.rb
Overview
Runs lightning commands which are methods in this namespace.
Command Basics
To get a list of commands and their description: lightning -h. To get usage and description on a command lightning COMMAND -h i.e lightning bolt -h. Any command and subcommand can be abbreviated. For example, lightning b c gem path1 is short for lightning bolt create gem path1.
Command Plugins
Command plugins are a way for users to define their own lightning commands. A command plugin is a .rb file in ~/.lightning/commands/. Each plugin can have multiple commands since a command is just a method in Lightning::Commands.
A sample command plugin looks like this:
module Lightning::Commands desc 'COMMAND', 'Prints hello' def hello(argv) puts "Hello with #{argv.size} arguments" end end
To register a command, desc must be placed before a method, describing the command’s usage and description. Note that a command receives commandline arguments as an array. See CommandsUtil for helper methods to be used inside a command.
For command plugin examples read the source.
Instance Method Summary
- - (String) command_usage Command usage for current command.
- - (Array) commands Available lightning commands.
- - (Object) desc(*args) Place before a command method to set its usage and description.
- - (Object) run(argv = ARGV) Called by `lightning` to call proper lightning command, print help or print version.
- - (Object) run_command(command, args) Calls proper lightning command with remaining commandline arguments.
- - (Object) source_file(argv) Silent command used by `lightning-reload` which prints Builder’s shell file.
Instance Method Details
- (String) command_usage
Command usage for current command
66 67 68 |
# File 'lib/lightning/commands.rb', line 66 def command_usage "Usage: lightning #{@command} #{desc_array[0]}" end |
- (Array) commands
Available lightning commands
49 50 51 |
# File 'lib/lightning/commands.rb', line 49 def commands @desc.keys end |
- (Object) desc(*args)
Place before a command method to set its usage and description
71 72 73 |
# File 'lib/lightning/commands.rb', line 71 def desc(*args) @next_desc = args end |
- (Object) run(argv = ARGV)
Called by `lightning` to call proper lightning command, print help or print version
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/lightning/commands.rb', line 34 def run(argv=ARGV) if (command = argv.shift) && (actual_command = unalias_command(command)) run_command(actual_command, argv) elsif command && respond_to?(command) run_command(command, argv) elsif %w{-v --version}.include?(command) puts "lightning #{VERSION}" else load_user_commands puts "Command '#{command}' not found.","\n" if command && !%w{-h --help}.include?(command) print_help end end |
- (Object) run_command(command, args)
Calls proper lightning command with remaining commandline arguments
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/lightning/commands.rb', line 54 def run_command(command, args) @command = command.to_s if %w{-h --help}.include?(args[0]) print_command_help else send(command, args) end rescue StandardError $stderr.puts "Error: "+ $!. end |
- (Object) source_file(argv)
Silent command used by `lightning-reload` which prints Builder’s shell file
4 5 6 |
# File 'lib/lightning/commands/core.rb', line 4 def source_file(argv) puts config.source_file end |