EDITED:
I've wrote code that uses OptionParser to handle command line input gracefully. I am facing two major hits.
- Passing an empty switches '-' doesn't give an error. Of course some programs take that as valid, but mine shouldn't.
- The program requires two mandatory switches, but it accepts one switch without complaining! e.g.
program.ruby -f foo -b bar
is the valid input and both switches are :REQUIRED. But providing only one switch passes without problem and this is not the desired behavior.
For the first case I've done this:
opts.on('-', /\A-\Z/) do
$stderr.print "Invalid empty switch"
exit 1
end
It works fine. But is this the proper way of doing it?
For the second case, I've looked around for a solution within the OptionParser.new block but I couldn't find one. e.g.
unless options.foo && options.bar
puts "Error."
exit 2
end
Doing it outside the OptionParser.new block is the normal way?