使用默认值和标志解析参数

时间:2010-09-13 23:18:26

标签: ruby command-line-arguments

我有一个带有一些参数的ruby bin,即-s-c-r(scrape,create和run的缩写)。现在我想设置一些默认值来抓取并创建(在两种情况下都为'.'),但如果我在trollop中使用:default,我无法检查该参数的设置与否。< / p>

project --scrape

应该相当于

project --scrape .

如何实现这一目标?

在此期间,我该如何制作

project target

等效
project --run target

1 个答案:

答案 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设置为松散。