class P4Tools::CommandParser
Public Class Methods
new(args)
click to toggle source
@param [Array<String>] args
# File lib/p4tools/parsers/command_parser.rb, line 5 def initialize(args) @raw_args = args @parsed_args = [] end
Public Instance Methods
parse()
click to toggle source
@return [Array<CommandEntry>]
# File lib/p4tools/parsers/command_parser.rb, line 11 def parse parse_global_arguments parse_commands @parsed_args end
Private Instance Methods
load_module_for_command(command)
click to toggle source
@param [String] command @return [Module]
# File lib/p4tools/parsers/command_parser.rb, line 56 def load_module_for_command(command) require command P4Tools.const_get(Utils.classify(command)) end
parse_arguments(command_module)
click to toggle source
@param [Module] command_module @return [Hash<Symbol, Object>]
# File lib/p4tools/parsers/command_parser.rb, line 41 def parse_arguments(command_module) parser = Trollop::Parser.new options = CommandOptions.new(parser) command_module.set_options(options) parser.stop_on SUB_COMMANDS Trollop.with_standard_exception_handling(parser) { raise Trollop::HelpNeeded if ARGV.empty? && options.show_help parser.parse @raw_args } end
parse_commands()
click to toggle source
@return [void]
# File lib/p4tools/parsers/command_parser.rb, line 27 def parse_commands while command = @raw_args.shift unless SUB_COMMANDS.include?(command) raise(ArgumentError, "The following subcommand does not exist: '#{command}'") end command_module = load_module_for_command(command) entry = CommandEntry.new(command_module, parse_arguments(command_module)) @parsed_args.push(entry) end end
parse_global_arguments()
click to toggle source
@return [void]
# File lib/p4tools/parsers/command_parser.rb, line 21 def parse_global_arguments entry = CommandEntry.new(P4Tools, parse_arguments(P4Tools)) @parsed_args.push(entry) end