我希望能够使用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/