Module: RakeCommander::Options::ClassMethods
- Defined in:
- lib/rake-commander/options.rb
Instance Method Summary collapse
-
#banner(desc = :not_used) ⇒ Object
Overrides the auto-generated banner.
-
#clear_options! ⇒ Object
Clears all the options.
-
#option(*args, override: true, reopen: false, **kargs, &block) ⇒ Object
Defines a new option or opens for edition an existing one if
reopen: true
is used. -
#option?(sym) ⇒ Boolean
Whether an option has been declared.
-
#option_get(sym) ⇒ RakeCommander::Option, NilClass
Retrieves the option.
-
#option_remove(*keys) ⇒ Object
Removes options with short or name
keys
from options. -
#option_reopen(*args, override: false, **kargs, &block) ⇒ Object
It re-opens an option for edition.
-
#options ⇒ Array<RakeCommander::Option>
List of configured options.
-
#options? ⇒ Boolean
Are there options defined?.
-
#options_hash(with_implicit: false) ⇒ Hash
The options indexed by the short and the name (so doubled up in the hash).
-
#options_use(opts, override: true) ⇒ Object
Allows to use a set of options.
-
#parse_options(argv = ARGV, method: :parse, &middleware) ⇒ Array<String>
It builds the
OptionParser
injecting themiddleware
block and parsesargv
.
Instance Method Details
#banner(desc = :not_used) ⇒ Object
Overrides the auto-generated banner
31 32 33 34 35 |
# File 'lib/rake-commander/options.rb', line 31 def (desc = :not_used) return @banner = desc unless desc == :not_used return @banner if @banner return if respond_to?(:task_options_banner, true) end |
#clear_options! ⇒ Object
Clears all the options.
133 134 135 136 |
# File 'lib/rake-commander/options.rb', line 133 def @options_hash = {} self end |
#option(*args, override: true, reopen: false, **kargs, &block) ⇒ Object
- If override is
true
, it will with a Warning when sameshort
orname
clashes.
Defines a new option or opens for edition an existing one if reopen: true
is used.
40 41 42 43 44 |
# File 'lib/rake-commander/options.rb', line 40 def option(*args, override: true, reopen: false, **kargs, &block) return option_reopen(*args, override: override, **kargs, &block) if reopen opt = option_class.new(*args, **kargs, &block) (opt, override: override) end |
#option?(sym) ⇒ Boolean
Returns whether an option has been declared.
123 124 125 |
# File 'lib/rake-commander/options.rb', line 123 def option?(sym) .key?(sym.to_sym) end |
#option_get(sym) ⇒ RakeCommander::Option, NilClass
Returns retrieves the option.
117 118 119 |
# File 'lib/rake-commander/options.rb', line 117 def option_get(sym) [sym.to_sym] end |
#option_remove(*keys) ⇒ Object
Removes options with short or name keys
from options
66 67 68 69 70 71 72 |
# File 'lib/rake-commander/options.rb', line 66 def option_remove(*keys) keys.map do |key| aux = option_class.new(key, sample: true) opt = .values_at(aux.name, aux.short).compact.first (opt) if opt end end |
#option_reopen(*args, override: false, **kargs, &block) ⇒ Object
To allow reopen using the name without modifying the argument, use a Symbol
Example: option_reopen :opt_with_arg
will keep the argument of 'opt_with_arg'
- If
override
isfalse, it will fail to change the
nameor the
short` when they are already taken by some other option. - It will have the effect of overriding existing options
when short
and name
are provided, name
takes precedence over short
in the lookup (to identify the existing option)
It re-opens an option for edition. If it does not exist, it upserts it.
55 56 57 58 59 60 61 62 63 |
# File 'lib/rake-commander/options.rb', line 55 def option_reopen(*args, override: false, **kargs, &block) aux = option_class.new(*args, **kargs, sample: true, &block) opt = .values_at(aux.name, aux.short).compact.first return option(*args, **kargs, &block) unless opt mod = {}.tap do |mkargs| mkargs.merge!(name: opt.name_full) if aux.name_full.is_a?(Symbol) end (opt, opt.merge(aux, **mod), override: override) end |
#options ⇒ Array<RakeCommander::Option>
List of configured options
111 112 113 |
# File 'lib/rake-commander/options.rb', line 111 def .values.uniq end |
#options? ⇒ Boolean
Returns are there options defined?.
128 129 130 |
# File 'lib/rake-commander/options.rb', line 128 def !.empty? end |
#options_hash(with_implicit: false) ⇒ Hash
The options indexed by the short and the name (so doubled up in the hash).
103 104 105 106 107 |
# File 'lib/rake-commander/options.rb', line 103 def (with_implicit: false) @options_hash ||= {} return @options_hash unless with_implicit @options_hash.merge(implicit_shorts) end |
#options_use(opts, override: true) ⇒ Object
it does a deep dup of each option.
Allows to use a set of options
79 80 81 82 83 84 85 |
# File 'lib/rake-commander/options.rb', line 79 def (opts, override: true) raise "Could not obtain list of RakeCommander::Option from #{opts.class}" unless opts = (opts) opts.each do |opt| (opt.deep_dup, override: override) end self end |
#parse_options(argv = ARGV, method: :parse, &middleware) ⇒ Array<String>
this method is extended in via the following modules:
RakeCommander::Options::Result
: makes the method to return aHash
with results, as well as captures/moves the leftovers to their own keyed argument.RakeCommander::Options:Error
: adds error handling (i.e. forward to rake commander errors)
It builds the OptionParser
injecting the middleware
block and parses argv
95 96 97 |
# File 'lib/rake-commander/options.rb', line 95 def (argv = ARGV, method: :parse, &middleware) (&middleware).send(method, argv) end |