我有一个带有一些参数的ruby bin,即-s
,-c
和-r
(scrape,create和run的缩写)。现在我想设置一些默认值来抓取并创建(在两种情况下都为'.'
),但如果我在trollop中使用:default
,我无法检查该参数的设置与否。< / p>
project --scrape
应该相当于
project --scrape .
如何实现这一目标?
在此期间,我该如何制作
project target
与
等效project --run target
答案 0 :(得分:0)
您可以在Trollop处理它之前修改ARGV
。你最好的选择可能是扫描输入参数,应用一些基本的转换,然后运行Trollop。
例如:
args = ARGV.split
idx = args.index '--scrape'
if idx != nil
if idx < args.length
if args[idx + 1][0..1] == '--'
args=args[0..idx] + ['.'] + args[idx+1..-1]
end
else
if args[idx + 1][0..1] == '--'
args << '.'
end
end
end
此代码段应检查--scrape
后面没有参数,并在这种情况下添加'.'
。您可以执行类似操作以检查省略的--run
参数。完成修改后,使用args.join(' ')
将参数重新组合成一个字符串。将此新字符串分配给ARGV
,然后将Trollop设置为松散。