如何使用OptionParse只允许一个标志

时间:2010-03-31 21:57:50

标签: ruby command-line

只有三种方法可以调用install.sh

./install.sh
./install.sh --force
./install.sh -f

我可以轻松地写出来。但是我正在尝试使用OptionParse。这是我到目前为止所做的。

 def self.parse
    option = {}
    optparse = OptionParser.new do |opts|
      opts.banner = "Usage: ./install.sh [--force]"
      opts.on('-f', '--force', '') do |dir|
        option[:force] = true
      end
    end

    begin
      optparse.parse!
    rescue OptionParser::InvalidOption => e
      puts e
    end
  end

如果用户键入./install.sh --foo,则程序失败,用户会看到以下消息。

invalid option: --foo

理想情况下,每当出现错误消息时,我都希望展示横幅广告。我该怎么做?

第二个问题:

如果用户调用喜欢这个./install.sh foo(注意foo作为参数传递),那么OptionParser不会显示任何错误。如何向用户提供此安装只接受一个参数-f或--force而不是其他任何内容的消息。

1 个答案:

答案 0 :(得分:1)

好像你已经这样做了。当您挽救异常并打印它时,您应该收到如下错误消息:

  

无效选项$ INVALID_OPTION

您可以使用

打印用法
puts optparse