Установить обработчик опций по умолчанию для OptionParser в ruby - PullRequest
7 голосов
/ 30 января 2010

Я пытаюсь получить простую обработку опций в своем приложении ruby. Похоже, OptionParser делает большую часть того, что я хочу, хотя я не могу найти способ изящно обрабатывать неожиданные аргументы.

Если указаны непредвиденные аргументы, я хочу обработать их так, как если бы аргумент -h был передан (показать использование и выйти). Хотя я не вижу способа справиться с этим.

Если OptionParser не может это сделать, есть ли другая библиотека, которую я мог бы использовать для простого анализа аргументов командной строки?

Ответы [ 2 ]

10 голосов
/ 30 января 2010

Вероятно, есть отличный способ сделать это, но я этого не знаю Я сделал это:

  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
0 голосов
/ 24 июля 2013

если сохранить ниже как 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
}

и выполнить ниже в терминале,

$./test.rb --foo

вы получите ниже.

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