Class: Cri::CommandDSL
- Inherits:
-
Object
- Object
- Cri::CommandDSL
- Defined in:
- lib/cri/command_dsl.rb
Overview
The command DSL is a class that is used for building and modifying commands.
Instance Method Summary (collapse)
-
- (void) aliases(*args)
Sets the command aliases.
-
- (void) be_hidden
Marks the command as hidden.
-
- (Cri::Command) command
The built command.
-
- (void) description(arg)
Sets the command description.
-
- (void) flag(short, long, desc, params = {}, &block)
(also: #forbidden)
Adds a new option with a forbidden argument to the command.
-
- (CommandDSL) initialize(command = nil)
constructor
Creates a new DSL, intended to be used for building a single command.
-
- (void) name(arg)
Sets the command name.
-
- (void) option(short, long, desc, params = {}, &block)
(also: #opt)
Adds a new option to the command.
-
- (void) optional(short, long, desc, params = {}, &block)
Adds a new option with an optional argument to the command.
-
- (void) required(short, long, desc, params = {}, &block)
Adds a new option with a required argument to the command.
-
- (void) run {|opts, args| ... }
Sets the run block to the given block.
-
- (void) runner(klass)
Defines the runner class for this command.
-
- (void) subcommand(command = nil, &block)
Adds a subcommand to the current command.
-
- (void) summary(arg)
Sets the command summary.
-
- (void) usage(arg)
Sets the command usage.
Constructor Details
- (CommandDSL) initialize(command = nil)
Creates a new DSL, intended to be used for building a single command. A Cri::CommandDSL instance is not reusable; create a new instance if you want to build another command.
15 16 17 |
# File 'lib/cri/command_dsl.rb', line 15 def initialize(command=nil) @command = command || Cri::Command.new end |
Instance Method Details
- (void) aliases(*args)
This method returns an undefined value.
Sets the command aliases.
54 55 56 |
# File 'lib/cri/command_dsl.rb', line 54 def aliases(*args) @command.aliases = args.flatten.map { |a| a.to_s } end |
- (void) be_hidden
This method returns an undefined value.
Marks the command as hidden. Hidden commands do not show up in the list of
subcommands of the parent command, unless --verbose is passed (or
:verbose => true
is passed to the Cri::Command#help method). This can
be used to mark commands as deprecated.
92 93 94 |
# File 'lib/cri/command_dsl.rb', line 92 def be_hidden @command.hidden = true end |
- (Cri::Command) command
Returns The built command
20 21 22 |
# File 'lib/cri/command_dsl.rb', line 20 def command @command end |
- (void) description(arg)
This method returns an undefined value.
Sets the command description.
72 73 74 |
# File 'lib/cri/command_dsl.rb', line 72 def description(arg) @command.description = arg end |
- (void) flag(short, long, desc, params = {}, &block) Also known as: forbidden
This method returns an undefined value.
Adds a new option with a forbidden argument to the command. If a block is given, it will be executed when the option is successfully parsed.
166 167 168 169 |
# File 'lib/cri/command_dsl.rb', line 166 def flag(short, long, desc, params={}, &block) params = params.merge(:argument => :forbidden) self.option(short, long, desc, params, &block) end |
- (void) name(arg)
This method returns an undefined value.
Sets the command name.
45 46 47 |
# File 'lib/cri/command_dsl.rb', line 45 def name(arg) @command.name = arg end |
- (void) option(short, long, desc, params = {}, &block) Also known as: opt
This method returns an undefined value.
Adds a new option to the command. If a block is given, it will be executed when the option is successfully parsed.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/cri/command_dsl.rb', line 112 def option(short, long, desc, params={}, &block) requiredness = params.fetch(:argument, :forbidden) multiple = params.fetch(:multiple, false) if short.nil? && long.nil? raise ArgumentError, "short and long options cannot both be nil" end @command.option_definitions << { :short => short.nil? ? nil : short.to_s, :long => long.nil? ? nil : long.to_s, :desc => desc, :argument => requiredness, :multiple => multiple, :block => block, } end |
- (void) optional(short, long, desc, params = {}, &block)
This method returns an undefined value.
Adds a new option with an optional argument to the command. If a block is given, it will be executed when the option is successfully parsed.
187 188 189 190 |
# File 'lib/cri/command_dsl.rb', line 187 def optional(short, long, desc, params={}, &block) params = params.merge(:argument => :optional) self.option(short, long, desc, params, &block) end |
- (void) required(short, long, desc, params = {}, &block)
This method returns an undefined value.
Adds a new option with a required argument to the command. If a block is given, it will be executed when the option is successfully parsed.
146 147 148 149 |
# File 'lib/cri/command_dsl.rb', line 146 def required(short, long, desc, params={}, &block) params = params.merge(:argument => :required) self.option(short, long, desc, params, &block) end |
- (void) run {|opts, args| ... }
204 205 206 207 208 209 210 211 |
# File 'lib/cri/command_dsl.rb', line 204 def run(&block) unless [2, 3].include?(block.arity) raise ArgumentError, "The block given to Cri::Command#run expects two or three args" end @command.block = block end |
- (void) runner(klass)
221 222 223 224 225 |
# File 'lib/cri/command_dsl.rb', line 221 def runner(klass) run do |opts, args, cmd| klass.new(opts, args, cmd).call end end |
- (void) subcommand(command = nil, &block)
This method returns an undefined value.
Adds a subcommand to the current command. The command can either be given explicitly, or a block can be given that defines the command.
32 33 34 35 36 37 38 |
# File 'lib/cri/command_dsl.rb', line 32 def subcommand(command=nil, &block) if command.nil? command = Cri::Command.define(&block) end @command.add_command(command) end |
- (void) summary(arg)
This method returns an undefined value.
Sets the command summary.
63 64 65 |
# File 'lib/cri/command_dsl.rb', line 63 def summary(arg) @command.summary = arg end |
- (void) usage(arg)
This method returns an undefined value.
Sets the command usage. The usage should not include the “usage:” prefix, nor should it include the command names of the supercommand.
82 83 84 |
# File 'lib/cri/command_dsl.rb', line 82 def usage(arg) @command.usage = arg end |