Class | Limelight::Commands::Command |
In: |
lib/limelight/commands/command.rb
|
Parent: | Object |
The base class for all limelight commands. The following is a list of them all.
Usage: limelight <command> [options] [params] commands: create Creates the directories and files for a production and/or scene. freeze freeze a gem into a production. open Open a limelight production. pack Pack a limelight production into a .llp file.
alias | [RW] | |
print_backtrace | [RW] | Flag. The backtrace on parse errors will be printed if true. |
Abstract class level methof that returns a string description of the command. Derivatives should override this class level method.
# File lib/limelight/commands/command.rb, line 67 67: def description 68: return "Default Command description" 69: end
Sets the alias for the derivative command and installs it in the command listing. All derivative much call this method exactly once.
# File lib/limelight/commands/command.rb, line 58 58: def install_as(name) 59: raise "Command already installed: #{name}." if LISTING[name] 60: self.alias = name 61: LISTING[name] = self 62: end
Parse the arguments. All options will be parsed first, then parse_remainder will be called on remaining args. Derivative should not override this method.
# File lib/limelight/commands/command.rb, line 93 93: def parse(args) 94: begin 95: remainder = options_spec.parse(args) 96: parse_remainder(remainder) 97: rescue SystemExit => e 98: raise e 99: rescue Exception => e 100: @has_parse_error = true 101: parse_error e 102: end 103: end
Runs the command. This is TemplateMethod. It will first parse the arguments, then require files, and finally process the command. Derivative should not override this method.
# File lib/limelight/commands/command.rb, line 80 80: def run(args) 81: parse(args) 82: do_requires 83: begin 84: process if !@has_parse_error 85: rescue SystemExit 86: #okay 87: end 88: end
Abstract method to define the command line options in the OptionParser. Derivative should override this method if they offer command line options
# File lib/limelight/commands/command.rb, line 154 154: def build_options(spec) 155: #override me 156: end
Abstract method to require any files needed for processing the command. Derivative should override this method if they need to require any files.
# File lib/limelight/commands/command.rb, line 147 147: def do_requires 148: #override me 149: end
Retreives the OptionParser instance for this command. It will create it if it doesn‘t exist.
# File lib/limelight/commands/command.rb, line 135 135: def options_spec 136: if @options_spec.nil? 137: @options_spec = OptionParser.new 138: @options_spec.on("-h", "--help", "Prints this usage summary.") { usage; exit 0 } 139: build_options(@options_spec) 140: end 141: return @options_spec 142: end
Prints an exception that occurs while parsing the arguments. The usages summary will follow.
# File lib/limelight/commands/command.rb, line 113 113: def parse_error(exception = nil) 114: if exception 115: puts "" 116: puts "!!! #{exception}" 117: puts exception.backtrace if @print_backtrace 118: end 119: usage 120: exit -1 121: end
Abstract method to parse command line paramters. Parameter are those command line arguments listed after the options. Derivatives should override this method they take command line paramters.
# File lib/limelight/commands/command.rb, line 161 161: def parse_remainder(args) 162: #override me 163: end
Prints the usage summary for a command.
# File lib/limelight/commands/command.rb, line 125 125: def usage 126: puts "" 127: puts "Usage: limelight #{self.class.alias} #{parameter_description}" 128: puts " #{self.class.description}" 129: puts " options:" 130: puts options_spec.summarize 131: end