Я хотел бы смочь использовать OptionParser рубина для парсинга подкоманд формы
COMMAND [GLOBAL FLAGS] [SUB-COMMAND [SUB-COMMAND FLAGS]]
как:
git branch -a
gem list foo
Я знаю, что мог переключиться на другую библиотеку синтаксического анализатора опции (как Trollop), но я интересуюсь изучением, как сделать это из OptionParser, так как я хотел бы изучить библиотеку лучше.
Какие-либо подсказки?
Разобрался. Мне нужно использовать OptionParser # order!
. Он будет анализировать все параметры с начала ARGV
до тех пор, пока не найдет не-параметр (который не является аргументом параметра), удаляя все, что он обрабатывает, из ARGV
, а затем выйдет.
Мне просто нужно сделать что-то вроде:
global = OptionParser.new do |opts|
# ...
end
subcommands = {
'foo' => OptionParser.new do |opts|
# ...
end,
# ...
'baz' => OptionParser.new do |opts|
# ...
end
}
global.order!
subcommands[ARGV.shift].order!
Также есть другие драгоценные камни, которые вы можете посмотреть, например main .