Module: Cl::Cmd::Dsl
Constant Summary
Constants included from Merge
Instance Method Summary collapse
- #abstract ⇒ Object
- #abstract? ⇒ Boolean
-
#arg(name, description, opts) ⇒ Object
Declares an argument.
-
#args(*args) ⇒ Object
Declare multiple arguments at once.
-
#description(description = nil) ⇒ String
Declare a description for this command.
-
#examples(examples = nil) ⇒ String
Declare an example text for this command.
-
#opt(name, description, opts) ⇒ Object
Declares an option.
-
#opts ⇒ Object
Collection of options supported by this command.
-
#required(*required) ⇒ Object
Declare alternative option requirements.
-
#required? ⇒ Boolean
Whether any alternative option requirements have been declared.
-
#summary(summary = nil) ⇒ String
Declare a summary for this command.
Methods included from Merge
Methods included from Underscore
Instance Method Details
#abstract ⇒ Object
8 9 10 11 |
# File 'lib/cl/dsl.rb', line 8 def abstract unregister @abstract = true end |
#abstract? ⇒ Boolean
13 14 15 |
# File 'lib/cl/dsl.rb', line 13 def abstract? !!@abstract end |
#arg(name, description, opts) ⇒ Object
Declares an argument
Use this method to declare arguments the command accepts.
For example:
```ruby
class GitPush < Cl::Cmd
arg remote, 'The Git remote to push to.', type: :string
end
```
Arguments do not need to be declared, in order to be passed to the Cmd instance, but it is useful to do so for more explicit help output, and in order to define extra properties on the arguments (e.g. their type).
50 51 52 |
# File 'lib/cl/dsl.rb', line 50 def arg(*args) self.args.define(self, *args) end |
#args(*args) ⇒ Object
Declare multiple arguments at once
See #arg for more details.
20 21 22 23 24 |
# File 'lib/cl/dsl.rb', line 20 def args(*args) return @args ||= superclass.respond_to?(:args) ? superclass.args.dup : Args.new unless args.any? opts = args.last.is_a?(Hash) ? args.pop : {} args.each { |arg| arg(arg, opts) } end |
#description(description = nil) ⇒ String
Declare a description for this command
This is the description that will be shown in the command details help output.
For example:
```ruby
class Api::Login < Cl::Cmd
description <<~str
Use this command to login to our API.
[...]
str
end
```
70 71 72 |
# File 'lib/cl/dsl.rb', line 70 def description(description = nil) description ? @description = description : @description end |
#examples(examples = nil) ⇒ String
Declare an example text for this command
This is the example text that will be shown in the command details help output.
For example:
```ruby
class Api::Login < Cl::Cmd
example <<~str
For example, in order to login to our API with your username and
password, you can use:
./api --username [username] --password [password]
str
end
```
92 93 94 |
# File 'lib/cl/dsl.rb', line 92 def examples(examples = nil) examples ? @examples = examples : @examples end |
#opt(name, description, opts) ⇒ Object
Declares an option
Use this method to declare options a command accepts.
See [this section](/#Options) for a full explanation on each feature supported by command options.
121 122 123 |
# File 'lib/cl/dsl.rb', line 121 def opt(*args, &block) self.opts.define(self, *args, &block) end |
#opts ⇒ Object
Collection of options supported by this command
This collection is being inherited from super classes.
128 129 130 |
# File 'lib/cl/dsl.rb', line 128 def opts @opts ||= self == Cmd ? Opts.new : superclass.opts.dup end |
#required(*required) ⇒ Object
Declare alternative option requirements.
Alternative (combinations of) options can be required. These need to be declared on the class body.
For example,
```ruby
class Api::Login < Cl::Cmd
# DNF, read as: api_key OR username AND password
required :api_key, [:username, :password]
opt '--api_key KEY'
opt '--username NAME'
opt '--password PASS'
end
```
Will require either the option ‘api_key`, or both the options `username` and `password`.
See [this section](/#Required_Options) for a full explanation of how alternative option requirements can be used.
160 161 162 |
# File 'lib/cl/dsl.rb', line 160 def required(*required) required.any? ? self.required << required : @required ||= [] end |
#required? ⇒ Boolean
Whether any alternative option requirements have been declared.
See [this section](/#Required_Options) for a full explanation of how alternative option requirements can be used.
136 137 138 |
# File 'lib/cl/dsl.rb', line 136 def required? !!@required end |
#summary(summary = nil) ⇒ String
Declare a summary for this command
This is the summary that will be shown in both the command list, and command details help output.
For example:
```ruby
class Api::Login < Cl::Cmd
summary 'Login to the API'
end
```
177 178 179 |
# File 'lib/cl/dsl.rb', line 177 def summary(summary = nil) summary ? @summary = summary : @summary end |