views:

49

answers:

1

I'm trying to get simple option handling in my ruby app. Looks like OptionParser does most of what I want, though I can't figure out a way to gracefully handle unexpected arguments.

If any unexpected arguments are provided I want to treat it as if the -h argument was passed (show usage and quit). I'm not seeing any way to handle that though.

If OptionParser can't do it, is there another library I could use for easily parsing command line arguments?

+2  A: 

There's probably a slick way to do it, but I don't know it. I've done this:

  opts = OptionParser.new
  ...
  opts.on_tail("-h", "--help",
               "Show this message") do
    puts opts
    exit
  end
  begin      
    opts.parse!(argv)
  rescue OptionParser::InvalidOption => e
    puts e
    puts opts
    exit(1)
  end
Wayne Conrad
That's what I ended up doing. It works for the case I'm handling, but I'd much rather be able to set a wildcard callback for any options that aren't explicitly defined.
Herms