我希望能够使用ruby的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!

关于ruby - 使用ruby的OptionParser解析子命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2732894/

10-13 04:43