Module: RakeCommander::Options::ClassMethods

Defined in:
lib/rake-commander/options.rb

Instance Method Summary collapse

Instance Method Details

Overrides the auto-generated banner



31
32
33
34
35
# File 'lib/rake-commander/options.rb', line 31

def banner(desc = :not_used)
  return @banner = desc unless desc == :not_used
  return @banner if @banner
  return task_options_banner if respond_to?(:task_options_banner, true)
end

#clear_options!Object

Clears all the options.



120
121
122
123
# File 'lib/rake-commander/options.rb', line 120

def clear_options!
  @options_hash = {}
  self
end

#option(*args, override: true, reopen: false, **kargs, &block) ⇒ Object

Note:
  • If override is true, it will with a Warning when same short or name 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)
  add_to_options(opt, override: override)
end

#option?(sym) ⇒ Boolean

Returns whether an option has been declared.

Parameters:

  • sym (Symbol)

    the name or short of the option.

Returns:

  • (Boolean)

    whether an option has been declared.



110
111
112
# File 'lib/rake-commander/options.rb', line 110

def option?(sym)
  options_hash.key?(sym.to_sym)
end

#option_get(sym) ⇒ RakeCommander::Option, NilClass

Returns retrieves the option.

Parameters:

  • sym (Symbol)

    the name or short of the option.

Returns:



104
105
106
# File 'lib/rake-commander/options.rb', line 104

def option_get(sym)
  options_hash[sym.to_sym]
end

#option_remove(*keys) ⇒ Object

Removes options with short or name keys from options



61
62
63
64
65
66
67
# File 'lib/rake-commander/options.rb', line 61

def option_remove(*keys)
  keys.map do |key|
    aux = option_class.new(key, sample: true)
    opt = options_hash.values_at(aux.name, aux.short).compact.first
    delete_from_options(opt) if opt
  end
end

#option_reopen(*args, override: false, **kargs, &block) ⇒ Object

Note:
  1. If override is false, it will fail to change thenameor theshort` when they are already taken by some other option.
  2. It will have the effect of overriding existing options
Note:

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.



53
54
55
56
57
58
# File 'lib/rake-commander/options.rb', line 53

def option_reopen(*args, override: false, **kargs, &block)
  aux = option_class.new(*args, **kargs, sample: true, &block)
  opt = options_hash.values_at(aux.name, aux.short).compact.first
  return option(*args, **kargs, &block) unless opt
  replace_in_options(opt, opt.merge(aux), override: override)
end

#optionsArray<RakeCommander::Option>

List of configured options

Returns:



98
99
100
# File 'lib/rake-commander/options.rb', line 98

def options
  options_hash.values.uniq
end

#options?Boolean

Returns are there options defined?.

Returns:

  • (Boolean)

    are there options defined?



115
116
117
# File 'lib/rake-commander/options.rb', line 115

def options?
  !options.empty?
end

#options_use(opts, override: true) ⇒ Object

Note:

it does a deep dup of each option.

Allows to use a set of options

Parameters:

  • override (Boolean) (defaults to: true)

    wheter existing options with same option name should be overriden, may they clash

  • options (Enumerable<RakeCommander::Option>)


74
75
76
77
78
79
80
# File 'lib/rake-commander/options.rb', line 74

def options_use(opts, override: true)
  raise "Could not obtain list of RakeCommander::Option from #{opts.class}" unless opts = to_options(opts)
  opts.each do |opt|
    add_to_options(opt.deep_dup, override: override)
  end
  self
end

#parse_options(argv = ARGV, method: :parse, &middleware) ⇒ Array<String>

Note:

this method is extended in via the following modules:

  1. RakeCommander::Options::Result: makes the method to return a Hash with results, as well as captures/moves the leftovers to their own keyed argument.
  2. RakeCommander::Options:Error: adds error handling (i.e. forward to rake commander errors)

It builds the OptionParser injecting the middleware block and parses argv

Parameters:

  • argv (Array<String>) (defaults to: ARGV)

    the command line arguments to be parsed.

  • method (Symbol) (defaults to: :parse)

    the parsing method (default is :parse; others: :order)

Returns:

  • (Array<String>)

    the leftovers of the OptionParser#parse call.



90
91
92
93
94
# File 'lib/rake-commander/options.rb', line 90

def parse_options(argv = ARGV, method: :parse, &middleware)
  RakeCommander.rake_comm_debug "(#{name})  P A R S E   O P T I O N S !", "\n", num: 5, pid: true
  RakeCommander.rake_comm_debug "  ---> ARGV: [#{argv.map {|a| a.nil?? "nil" : "'#{a}'"}.join(', ')}]"
  options_parser(&middleware).send(method, argv)
end