ruby GLI可选参数以短划线( - )开头

时间:2016-04-25 14:33:14

标签: ruby command-line-interface gli-gem

我想知道允许可选参数以破折号( - )开头的最佳方法是什么。我希望子命令接受数字样式参数,该参数应为“+42”或“-123”。所以从命令行我可以做到:

gliapp show -123

这导致错误,因为gli认为-123是一个未知的开关。 我知道可以做到

gliapp show -- -123

但我不希望用户解决此问题。 在将ARGV传递给gli run之前,我是否必须自己处理-123?

这是一个最小的例子:

#!/usr/bin/env ruby

require 'gli'
include GLI::App
subcommand_option_handling :normal
arguments :strict

desc 'p given arg which may start with a dash (-)'
arg "number", :optional;
command :show do |c|
  c.action do |global_opts,opts,args|   
    p args.first
  end
end
exit run(ARGV)

1 个答案:

答案 0 :(得分:0)

GLI在封面下使用OptionParser,它将获取以破折号开头的所有参数。这是非常标准的UNIX。

您可以使用标记来捕获值,如下所示:

command :show do |c|
  c.flag :number
  c.action do |global,options,args|
    puts options[:number]
  end
end

然后:

> gliapp show --number=-123
-123