0

我想知道允许可选参数以破折号 (-) 开头的最佳方法是什么。我想要一个子命令接受应该是“+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)
4

1 回答 1

0

GLIOptionParser在幕后使用,它会抓取以破折号开头的所有参数。这是非常标准的 UNIX。

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

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

接着:

> gliapp show --number=-123
-123
于 2016-04-28T15:56:05.177 回答