Как использовать OptionParse, чтобы разрешить только один флаг - PullRequest
0 голосов
/ 01 апреля 2010

Есть только три способа вызвать 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 Ответ

1 голос
/ 01 апреля 2010

Кажется, ты уже это делаешь. Когда вы спасаете исключение и распечатываете его, вы должны получить сообщение об ошибке вроде:

неверный параметр $ INVALID_OPTION

Вы можете распечатать использование с

puts optparse
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...