I’m hoping someone can help me get around a problem I’m having. I have
a
Ruby command-line program where I use OptionParser to parse the
program’s
options. This program is a wrapper for a bunch of other programs, each
of
which also accept command-line options. A typical run command would
look
like this:
Where the information passed with --script-options is the options to use
for
the script to be ran. However, OptionParser in my main wrapper program
attempts to parse the options given by --script-options and throws an
error
because they aren’t valid options for the main wrapper program. I was
hoping that surrounding them in quotes would cause it to be seen as a
single
input string to --script-options but that doesn’t seem to be the case.
Does
anyone know how I can do what I’m trying to do?
Where the information passed with --script-options is the options to use
for the script to be ran. However, OptionParser in my main wrapper program
attempts to parse the options given by --script-options and throws an error
because they aren’t valid options for the main wrapper program. I was
hoping that surrounding them in quotes would cause it to be seen as a
single input string to --script-options but that doesn’t seem to be the
case. Does anyone know how I can do what I’m trying to do?
Thanks in advance!!! – BTR
I had exactly the same problem once. With the help of some people on
this
list, I found the following solution:
require ‘optparse’
option_parser = OptionParser.new do |o|
o.on(’-a’, ‘–a-option’, ‘something’){}
end
unknown = []
begin
option_parser.parse! ARGV
rescue OptionParser::InvalidOption => e
e.recover ARGV #recover just put the unknown option back into ARGV, so I extract it #again and put it into unknown
unknown << ARGV.shift
#if ARGV still contains some elements, and the first one doesn’t start #with a -, i.e is the argument for the unknown option, I remove it as #well
unknown << ARGV.shift if ARGV.size>0 and ARGV.first[0…0]!=’-’