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 --include '*.xml' --exclude '.idea/**' \
  --license LICENSE.txt

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

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

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

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

$ xcop

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

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

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

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

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

sixnines availability badge   GitHub stars