class Rootage::OptionDefinition

‘OptionDefinition` is a class that holds command’s option definitions.

Private Instance Methods

check(cmd) click to toggle source

Check validness of the command options.

# File lib/rootage/option.rb, line 150
def check(cmd)
  # check requisite options
  list.each do |item|
    if item.requisite and not(cmd.model[item.key])
      raise OptionError.new(cmd, 'option "%s" is requisite' % [item.long])
    end
  end
end
execute_main(cmd) click to toggle source

Parse the command options.

@param cmd [Command]

command object

@return [void]

# File lib/rootage/option.rb, line 122
def execute_main(cmd)
  # append help option
  _list = list.clone
  _list << HelpOption.help

  _list.each do |item|
    # merge init values
    if item.init
      cmd.model[item.name] = Normalizer.normalize(item.type, item.init)
    end
    # set process context class
    if item.process_context_class.nil?
      item.process_context_class = get_process_context_class(cmd)
    end
  end

  # parse options
  OptionParser.new do |opt|
    _list.each {|item| item.setup(opt, cmd)}
  end.send(cmd.has_subcommands? ? :order! : :parse!, cmd.argv)

  # check option's validness
  check(cmd)
rescue OptionParser::ParseError, NormalizerValueError => e
  raise OptionError.new(cmd, e.message)
end