# 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
# 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
# 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