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

[](name)
Alias for: find
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
Also aliased as: find_opt, []
find_opt(name)
Alias for: find
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
opt(option, config = {})
Alias for: add
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