class Fuelcell::Action::OptsManager
Used by the Command
to manage adding option from its dsl. It is also used during option parsing to find options, add global options, or check if any required options have been missed
Attributes
options[R]
Public Class Methods
new()
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 9 def initialize @options = {} end
Public Instance Methods
add(option, config = {})
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 48 def add(option, config = {}) option = create(option, config) if option.is_a?(String) if options.key?(option.name) fail "can not add option: duplicate exists with name #{option.name}" end options[option.name] = option end
Also aliased as: opt
callable()
click to toggle source
Check to determine if any of the options are callable, meaning do they point to another command or have a lambda to be executed
@return [Hash]
# File lib/fuelcell/action/opts_manager.rb, line 25 def callable list = options.select { |_, opt| opt.callable? || opt.cmd_path? } _, value = list.first value end
callable?()
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 17 def callable? !callable.nil? end
create(name, config = {})
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 79 def create(name, config = {}) OptDefinition.new(name, config) end
each() { |option| ... }
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 13 def each options.each {|_, option| yield option } end
find(name)
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 69 def find(name) target = false options.each do |(_, option)| target = option if option.name?(name) end target end
globals()
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 35 def globals options.select { |_, opt| opt.global? } end
missing_opts(names) { |list| ... }
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 39 def missing_opts(names) missing = required_opts.keys - names return [] if missing.empty? list = options.select { |(key, _)| missing.include?(key) }.values yield list if block_given? list end
remove(name)
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 57 def remove(name) # looks like an option definition so lets use it's name if name.respond_to?(:name) && options.key?(name.name) return options.delete(name.name) end opt = find(name) return false unless opt options.delete(opt.name) end
required_opts()
click to toggle source
# File lib/fuelcell/action/opts_manager.rb, line 31 def required_opts options.select { |_, opt| opt.required? } end