Используя 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
тоже.