Используя OptionParser рубина для парсинга подкоманд

Я хотел бы смочь использовать OptionParser рубина для парсинга подкоманд формы

COMMAND [GLOBAL FLAGS] [SUB-COMMAND [SUB-COMMAND FLAGS]]

как:

git branch -a
gem list foo

Я знаю, что мог переключиться на другую библиотеку синтаксического анализатора опции (как Trollop), но я интересуюсь изучением, как сделать это из OptionParser, так как я хотел бы изучить библиотеку лучше.

Какие-либо подсказки?

24
задан rampion 28 April 2010 в 20:28
поделиться

2 ответа

Разобрался. Мне нужно использовать 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!
39
ответ дан 28 November 2019 в 23:39
поделиться

Также есть другие драгоценные камни, которые вы можете посмотреть, например main .

0
ответ дан 28 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: