开发者

Set up default option handler for ruby's OptionParser

开发者 https://www.devze.com 2022-12-19 02:45 出处:网络
I\'m trying to get simple option handling in my ruby app.Looks like OptionParser does most of what I want, though I ca开发者_开发百科n\'t figure out a way to gracefully handle unexpected arguments.

I'm trying to get simple option handling in my ruby app. Looks like OptionParser does most of what I want, though I ca开发者_开发百科n'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?


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


if you save below as test.rb

#/usr/bin/env ruby
require 'optparse'

test = nil
help = nil
ARGV.options {|opt|
  opt.on("--test=test") {|val| test=val}
  help = opt.help
  begin
    opt.parse!
  rescue OptionParser::InvalidOption => e
    puts help
  end
}

and execute below in the terminal,

$./test.rb --foo

you get below.

Usage: test [options]
    --test=test
0

精彩评论

暂无评论...
验证码 换一张
取 消