class GLI::GLIOptionParser::LegacyCommandOptionParser

Public Instance Methods

parse!(parsing_result,argument_handling_strategy) click to toggle source
# File lib/gli/gli_option_parser.rb, line 181
def parse!(parsing_result,argument_handling_strategy)
  command                     = parsing_result.command
  option_parser_factory       = OptionParserFactory.for_command(command,@accepts)
  option_block_parser         = LegacyCommandOptionBlockParser.new(option_parser_factory, self.error_handler)
  option_block_parser.command = command

  parsing_result.arguments       = option_block_parser.parse!(parsing_result.arguments)
  parsing_result.command_options = option_parser_factory.options_hash_with_defaults_set!

  subcommand,args                = find_subcommand(command,parsing_result.arguments)
  parsing_result.command         = subcommand
  parsing_result.arguments       = args
  verify_required_options!(command.flags, parsing_result.command, parsing_result.command_options)
end

Private Instance Methods

find_subcommand(command,arguments) click to toggle source
# File lib/gli/gli_option_parser.rb, line 198
def find_subcommand(command,arguments)
  arguments = Array(arguments)
  command_name = if arguments.empty?
                   nil
                 else
                   arguments.first
                 end

  default_command = command.get_default_command
  finder = CommandFinder.new(command.commands, :default_command => default_command.to_s)

  begin
    results = [finder.find_command(command_name),arguments[1..-1]]
    find_subcommand(results[0],results[1])
  rescue UnknownCommand, AmbiguousCommand
    begin
      results = [finder.find_command(default_command.to_s),arguments]
      find_subcommand(results[0],results[1])
    rescue UnknownCommand, AmbiguousCommand
      [command,arguments]
    end
  end
end