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-файле, если они есть. Однако некоторые аргументы могут быть удобными как значения по умолчанию, и вместо их передачи через командную строку при каждом выполнении мы можем сохранить их в некотором конфигурационном файле. Вопрос в следующем: какой формат лучше использовать для этого файла? YAML, JSON или TOML? Ни один из них! Я предлагаю использовать простой текст.

Предположим, вы хотите, чтобы xcop проверял все файлы *.xml в вашем репозитории, но игнорировал XML-файлы в каталоге .idea/. Вы также хотите убедиться, что все XML-файлы имеют лицензию в преамбуле. Вот как вы бы вызвали xcop:

Вам нужно использовать этот набор аргументов везде, где вызывается xcop: в сценарии сборки, в CI/CD пайплайне и на вашем ноутбуке, когда вы проверяете, что все правильно. То, что некоторые из нас иногда делают, - создают новый файл Bash под названием run_xcop.sh с ровно этой одной командой.

Я предлагаю лучшее решение. Вы можете создать простой текстовый файл .xcop в корне репозитория и поместить все необходимые “стандартные” параметры командной строки туда, по одному на строку:

Теперь вы можете вызвать инструмент просто так:

Он найдет файл .xcop и прочитает все строки из него, рассматривая каждую из них как аргумент командной строки. Он в основном конкатенирует то, что предоставлено в командной строке с тем, что найдено в файле с настройками по умолчанию.

Я считаю, что такой подход гораздо лучше, чем YAML, JSON, XML, TOML, INI и другие форматы конфигурации, просто потому, что он не требует от пользователей изучения двух форматов: одного для параметров командной строки и другого для файла конфигурации. Мы учимся только одному и используем его взаимозаменяемо, как при вызове инструмента “вручную”, так и при настройке его поведения в файле с настройками по умолчанию.

Кстати, можно настроить поведение xcop глобально, создав файл ~/.xcop (в домашнем каталоге пользователя). Значения по умолчанию из этого файла также будут объединены с теми, которые указаны в командной строке и найдены в локальном файле .xcop.

Я разработал несколько других своих инструментов командной строки, используя тот же принцип, включая pdd, texqc и texsc.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:13

sixnines availability badge   GitHub stars