繁体   English   中英

使用Trollop在Ruby中进行命令行解析,如何覆盖'version'参数

[英]Using Trollop for command line parsing in Ruby, how do I override the 'version' parameter

我有一个Ruby程序,需要将版本作为参数。 此版本是指程序将与之交互的资源的版本,而不是程序本身的版本。 我找到了Trollop,并对其简单性感到满意。 但是,Trollop似乎自动创建了--version标志来打印出程序的版本。 我希望我的版本标志将字符串作为参数。

Google搜索在Trollup项目的History.txt中提供了以下内容:

== 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

上面的代码正确地要求传入version参数。但是,当我传入它时,程序将立即退出。 我认为这是印刷版(显然为零)并退出。

如何覆盖版本以在Trollop中接受参数?

将选项定义为:version以外的任何内容,然后将:long:short形式配置为versionv

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在看到提供了:version选项时仍会抛出VersionNeeded异常 然后Trollop打印版本并立即退出。

同样的想法也适用于:help

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM