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
选项所做的,该选项打印了可以在下游解析的键值对。