class DTK::Client::OptionParser
Public Class Methods
parse_options(command_class,argv)
click to toggle source
# File lib/parser/adapters/option_parser.rb, line 42 def self.parse_options(command_class,argv) args_hash = Hash.new unless subcommand = argv[0] raise Error.new("No subcommand given") end method = subcommand.to_sym unless parse_info = (command_class.const_get "CLIParseOptions")[subcommand.to_sym] return [method,args_hash] end ::OptionParser.new do|opts| opts.banner = "Usage: #{command_class.command_name} #{subcommand} [options]" (parse_info[:options]||[]).each do |parse_info_option| raise Error.new("missing param name") unless param_name = parse_info_option[:name] raise Error.new("missing optparse spec") unless parse_info_option[:optparse_spec] opts.on(*parse_info_option[:optparse_spec]) do |val| args_hash[param_name.to_s] = val ? val : true end end opts.on('-h', '--help', 'Display this screen') do puts opts exit end end.parse!(argv) [method,args_hash] end