class GLI::GLIOptionParser::GlobalOptionParser

Public Class Methods

new(option_parser_factory,command_finder,flags) click to toggle source
# File lib/gli/gli_option_parser.rb, line 24
def initialize(option_parser_factory,command_finder,flags)
  @option_parser_factory = option_parser_factory
  @command_finder        = command_finder
  @flags                 = flags
end

Public Instance Methods

parse!(parsing_result) click to toggle source
# File lib/gli/gli_option_parser.rb, line 30
def parse!(parsing_result)
  parsing_result.arguments      = GLIOptionBlockParser.new(@option_parser_factory,UnknownGlobalArgument).parse!(parsing_result.arguments)
  parsing_result.global_options = @option_parser_factory.options_hash_with_defaults_set!
  command_name = if parsing_result.global_options[:help]
                   "help"
                 else
                   parsing_result.arguments.shift
                 end
  parsing_result.command        = @command_finder.find_command(command_name)
  unless command_name == 'help'
    verify_required_options!(@flags, parsing_result.command, parsing_result.global_options)
  end
  parsing_result
end

Protected Instance Methods

verify_required_options!(flags, command, options) click to toggle source
# File lib/gli/gli_option_parser.rb, line 47
def verify_required_options!(flags, command, options)
  missing_required_options = flags.values.
    select(&:required?).
    reject { |option|
      options[option.name] != nil
  }
  unless missing_required_options.empty?
    missing_required_options.sort!
    raise MissingRequiredArgumentsException.new(missing_required_options.map { |option|
      "#{option.name} is required"
    }.join(', '), command)
  end
end