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: trueis 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
keysfrom 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
OptionParserinjecting themiddlewareblock and parsesargv.
Instance Method Details
#banner(desc = :not_used) ⇒ Object
Overrides the auto-generated banner
36 37 38 39 40 41 |
# File 'lib/rake-commander/options.rb', line 36 def (desc = :not_used) return @banner = desc unless desc == :not_used return @banner if @banner if respond_to?(:task_options_banner, true) end |
#clear_options! ⇒ Object
Clears all the options.
146 147 148 149 |
# File 'lib/rake-commander/options.rb', line 146 def @options_hash = {} self end |
#option(*args, override: true, reopen: false, **kargs, &block) ⇒ Object
- If override is
true, it will with a Warning when sameshortornameclashes.
Defines a new option or opens for edition an existing one if reopen: true is used.
46 47 48 49 50 51 |
# File 'lib/rake-commander/options.rb', line 46 def option(*args, override: true, reopen: false, **kargs, &block) # rubocop:disable Naming/BlockForwarding, Style/ArgumentsForwarding 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.
136 137 138 |
# File 'lib/rake-commander/options.rb', line 136 def option?(sym) .key?(sym.to_sym) end |
#option_get(sym) ⇒ RakeCommander::Option, NilClass
Returns retrieves the option.
130 131 132 |
# File 'lib/rake-commander/options.rb', line 130 def option_get(sym) [sym.to_sym] end |
#option_remove(*keys) ⇒ Object
Removes options with short or name keys from options
75 76 77 78 79 80 81 |
# File 'lib/rake-commander/options.rb', line 75 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
overrideisfalse, it will fail to change thenameor theshort` 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.
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rake-commander/options.rb', line 62 def option_reopen(*args, override: false, **kargs, &block) # rubocop:disable Naming/BlockForwarding, Style/ArgumentsForwarding aux = option_class.new(*args, **kargs, sample: true, &block) # rubocop:disable Naming/BlockForwarding, Style/ArgumentsForwarding 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
124 125 126 |
# File 'lib/rake-commander/options.rb', line 124 def .values.uniq end |
#options? ⇒ Boolean
Returns are there options defined?.
141 142 143 |
# File 'lib/rake-commander/options.rb', line 141 def !.empty? end |
#options_hash(with_implicit: false) ⇒ Hash
The options indexed by the short and the name (so doubled up in the hash).
115 116 117 118 119 120 |
# File 'lib/rake-commander/options.rb', line 115 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
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/rake-commander/options.rb', line 88 def (opts, override: true) msg = "Could not obtain list of RakeCommander::Option from #{opts.class}" raise msg 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 aHashwith 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
107 108 109 |
# File 'lib/rake-commander/options.rb', line 107 def (argv = ARGV, method: :parse, &middleware) (&middleware).send(method, argv) end |