Options 跟踪选项默认值和执行选项的程序列表
这是一个关于如何做到“正确”的稍微有点理论性的问题,尽管我有一个黑客破解的解决方案 我有一个编译程序Options 跟踪选项默认值和执行选项的程序列表,options,Options,这是一个关于如何做到“正确”的稍微有点理论性的问题,尽管我有一个黑客破解的解决方案 我有一个编译程序X,它作为工作流的一部分执行。工作流在不同的步骤1-4接收输入,在步骤5,所有这些输入被转换为显式传递的选项列表Le,这些选项被传递到编译程序X执行。随后,步骤8读入执行程序X的结果文件,解析显式传递给程序X的选项Le,并写下选项表T,该表应充分描述程序X是如何执行的 问题是程序X对所有未显式传递的选项都有默认值。这是程序X的选项Li的完整隐式列表。我希望通过将显式选项Le与选项默认列表Li合并,
X
,它作为工作流的一部分执行。工作流在不同的步骤1-4接收输入,在步骤5,所有这些输入被转换为显式传递的选项列表Le
,这些选项被传递到编译程序X
执行。随后,步骤8读入执行程序X
的结果文件,解析显式传递给程序X
的选项Le
,并写下选项表T
,该表应充分描述程序X
是如何执行的
问题是程序X
对所有未显式传递的选项都有默认值。这是程序X
的选项Li
的完整隐式列表。我希望通过将显式选项Le
与选项默认列表Li
合并,完成选项T
的最终表格
现在实现:到目前为止,我的解决方案是首先解析结果文件中的Le
列表,然后运行程序X--help
,它列出了所有带有默认值的选项,并将它们解析为Li
。然后,为了得到键/值列表T
,将Li
中的条目替换为Le
中存在的条目:
X --A 1 --B 2 --C 3 --F 5 > Le.tsv
X --help > Li.tsv
./merge_lists Li.tsv Le.tsv > T.tsv
这是最好的方法吗?还有其他想法吗?您还可以为
X
引入“干运行”模式。然后你就可以跑了
X --A 1 --B 2 --C 3 --F 5 --dry-run > T.tsv
它将解析所有命令行选项,打印所有已设置的参数并退出。给出
X
a——列出有效参数选项。它将覆盖默认值,然后打印所有选项及其值,类似于--help
命令。该选项还可以打印任何非选项参数加上任何感兴趣的值,例如计算机的详细信息、任何相关的环境变量、日期和时间等。谢谢,这正是我们使用--help defaults
选项所做的,该选项打印了可以在下游解析的键值对。