2010-03-31 2 views
0

Есть только три способа запуска INSTALL.shКак использовать OptionParse, чтобы только один флаг

./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

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

недопустимая опция $ INVALID_OPTION

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

puts optparse 
Смежные вопросы