您可以尝试的一件简单事就是修改 ARGV 在Trollop处理它之前。首先,读入配置文件并将存储在那里的数据转换为等效命令行选项的数组。现在, 前置 那个数组到 ARGV 和 然后 设置Trollop松散。这样,Trollop将解析您的所有参数(无论它们来自配置文件还是来自CLI)。由于您的配置文件参数现在列在CLI参数之前,因此任何CLI选项都将覆盖匹配的配置文件选项(因为后面的选项会覆盖先前的选项)。
ARGV
您的配置文件可以是您想要使用的任何格式,但有时最简单的形式可能是最简单的。尝试使用纯文本格式,其中配置文件内容只是您要传递给脚本的确切参数。也就是说,写入文件的内容使得调用:
your_script.rb `cat optionsfile` -more -CLI -options
会按预期工作。以这种格式存储选项使其易于编辑和易于处理。只需读入文件(应该是单行)并调用 String.split(' ') 将选项拆分为数组,就像它们来自时出现一样 ARGV 。一种变体是拥有一个多行配置文件,每行一个CLI参数。在这种情况下,您可以使用类似的方法一次一行地构建选项数组 File.each_line(configfile) {|x| options_array << x} 。
String.split(' ')
File.each_line(configfile) {|x| options_array << x}