23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/space_core/cli/repeatable_options.rb', line 23
def self.call(command, arguments, prog_name)
original_arguments = arguments.dup
parsed_options = {}
OptionParser.new do |opts|
command.options.each do |option|
opts.on(*option.parser_options) do |value|
if option.array?
(parsed_options[option.name.to_sym] ||= []).concat(value)
else
parsed_options[option.name.to_sym] = value
end
end
end
opts.on_tail("-h", "--help") do
return Result.help
end
end.parse!(arguments)
parsed_options = command.default_params.merge(parsed_options)
parse_required_params(command, arguments, prog_name, parsed_options)
rescue ::OptionParser::ParseError, ValueError
Result.failure("ERROR: \"#{prog_name}\" was called with arguments \"#{original_arguments.join(" ")}\"")
end
|