首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby CLI应用程序配置/参数管理

Ruby CLI应用程序配置/参数管理
EN

Stack Overflow用户
提问于 2010-08-19 05:07:05
回答 1查看 457关注 0票数 1

我目前正在开发Ruby中的一个CLI应用程序,我正在使用Trollop (http://trollop.rubyforge.org/)来处理cli参数。

我还希望实现在~/.mycfg和cwd/.mycfg中存储所需选项的可能性,后者优先。

我尝试实现的行为是:

如果当前工作目录中存在.mycfg,则从那里加载默认选项;否则,如果它存在于用户的主目录中,则从那里加载选项。

然后,如果这些选项也作为参数传递,我将覆盖这些选项。

问题是,配置文件应该采用什么格式?我考虑过YAML,但是如何将Trollop为参数生成的数组与YAML合并,或者相反。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-19 05:48:18

你可以尝试的一件简单的事情是在ARGV处理它之前修改它。首先,读取您的配置文件,并将存储在其中的数据转换为一个等效的命令行选项数组。现在,将该数组预先设置为ARGV,然后将其设置为松散。这样,Trollop将解析您的所有参数(无论它们来自配置文件还是CLI)。由于配置文件参数现在列在CLI参数之前,因此任何CLI选项都将覆盖匹配的配置文件选项(因为较新的选项会覆盖较早的选项)。

您的配置文件可以是您想使用的任何格式,但有时最简单的格式可能是最简单的。尝试使用纯文本格式,其中的配置文件内容就是您想要传递给脚本的确切参数。也就是说,文件的内容是这样写的,即调用:

代码语言:javascript
复制
your_script.rb `cat optionsfile` -more -CLI -options

会像预期的那样工作。以这种格式存储选项使其易于编辑和处理。只需读取文件(应该是一行)并调用String.split(' ')将选项拆分到一个数组中,就像它们从ARGV中出现时一样。一种变化是有一个多行配置文件,每行一个CLI参数。在这种情况下,您可以使用类似于File.each_line(configfile) {|x| options_array << x}的东西一次一行地构建您的选项数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3516694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档