42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# 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
|