I\'d like to be able to use ruby\'s OptionParser to parse sub-commands of the form
COMMAND [GLOBAL FLAGS] [SUB-COMMAND [SUB-COMMAND FLAGS]]
lik
Figured it out. I need to use OptionParser#order!
. It will parse all the options from the start of ARGV
until it finds a non-option (that isn't an option argument), removing everything it processes from ARGV
, and then it will quit.
So I just need to do something like:
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!