Используя Trollop для разбора командной строки в Ruby, как мне переопределить параметр 'version'

У меня есть программа на Ruby, которая должна принимать версию в качестве параметра. Эта версия относится к версии ресурса, с которой будет взаимодействовать программа, а не к версии самой программы. Я нашел Trollop и был доволен его простотой. Однако, похоже, что Trollop автоматически создает флаг --version для распечатки версии программы. Я хочу, чтобы мой флаг версии принял строку в качестве параметра.

Поиски в Google показали следующее в History.txt проекта Trollup:

== 1.3 / 2007-01-31
* Wrap at (screen width - 1) instead of screen width.
* User can override --help and --version.
* Bugfix in handling of -v and -h.
* More tests to confirm the above.

Из истории видно, что я должен иметь возможность переопределить --version. Однако, когда я создаю опцию --version и передаю ее, программа завершается немедленно.

opts = Trollop::options do
  opt : version, "The version to use.  ie. 1.0.1", :type => String, :required => true
end

Приведенный выше код правильно требует передачи параметра версии. Однако, когда я передаю его, программа немедленно завершает работу. Я думаю, что это печатная версия (которая, по-видимому, ноль) и выход.

Как мне переопределить версию, чтобы взять аргумент в Trollop?

1 ответ

Решение

Определите свой вариант как что-либо кроме :version затем настройте :long а также :short формы как version а также v,

opts = Trollop::options do
  opt :use_version, "The version to use.  ie. 1.0.1", 
    :long => 'version', :short => 'v', :type => String, :required => false
end

Когда вы определяете опцию как :version, по умолчанию :version определение отменено, но Trollop по-прежнему бросает VersionNeeded Исключение, когда он видит это :version опция была предоставлена. Затем Trollop печатает версию и сразу же выходит.

Та же идея относится и к :help тоже.

Другие вопросы по тегам