Command Line Default Options in Linearized Plain Text

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

几年前,我创建了一个简单的命令行工具 xcop,它可以检查 XML 文件的样式。它类似于 Checkstyle(用于 Java)和 Pep8(用于 Python),但适用于 XML。使用 xcop 非常简单:只需通过几个命令行参数运行它,它就会返回在您的 XML 文件中发现的错误列表(如果有的话)。然而,其中一些参数可能方便作为默认值,并且我们可以将它们存储在某个配置文件中,而不是在每次执行时通过命令行传递它们。问题是:这个文件的最佳格式是什么?YAMLJSONTOML?都不是!我建议使用纯文本。

假设你想让 xcop 检查你的代码库中的所有 *.xml 文件,但忽略 .idea/ 目录中的 XML 文件。你还希望确保所有 XML 文件的前言中都有许可证。你可以这样调用 xcop

$ xcop --include '*.xml' --exclude '.idea/**' \
  --license LICENSE.txt

你必须在调用 xcop 的任何地方使用这组参数:在构建脚本中、在 CI/CD 流水线中,在你检查一切是否正确时也要在你的笔记本电脑上使用。我们有时会创建一个名为 run_xcop.sh 的新的 Bash 文件,其中只包含这个命令。

我建议一个更好的解决方案。您可以在代码库的根目录中创建一个名为.xcop的纯文本文件,并将所有需要的“默认”命令行选项按行放置其中:

--include=*.xml
--exclude=.idea/**
--license=LICENSE.txt

现在,你可以像这样调用工具:

$ xcop

它将找到.xcop文件并读取其中的所有行,将每一行都视为命令行参数。它基本上会将命令行中提供的内容与文件中默认值进行连接

我相信这种方法要比YAML、JSON、XML、TOML、INI和其他配置格式好得多,简单地因为它不要求我们用户学习两种格式:一种用于命令行选项,另一种用于配置文件。我们只需学习一种格式,无论是在手动调用工具时还是在使用默认配置文件配置其行为时,都可以互换使用。

顺便提一句,可以通过创建~/.xcop文件(位于用户的主目录中)来全局配置xcop的行为。该文件中的默认设置也会与命令行提供的设置以及本地.xcop文件中的设置合并。

我使用同样的原则设计了其他几个命令行工具,包括pddtexqctexsc

Translated by ChatGPT gpt-3.5-turbo/35 on 2023-09-09 at 15:57

sixnines availability badge   GitHub stars