maxicfg

Справочник CLI

Все команды принимают --help. Глобальные флаги можно указывать как до подкоманды, так и после неё.

Глобальные флаги

ФлагОписание
-c, --config <path>путь к .maxicfg.yaml
-p, --profile <name>профиль, с которым работать
-f, --format <fmt>text, json, github, junit
-q, --quietне печатать вывод, полагаться на код возврата
--no-colorотключить ANSI-цвета
-v, --verboseпоказывать, что и почему читается

maxicfg lint

Проверить один или несколько источников по схеме.

maxicfg lint [paths...] [flags]
ФлагОписание
--schema <path>файл схемы (перекрывает файл проекта)
--strictсчитать неизвестные ключи ошибкой
--warn-unusedсообщать о ключах схемы, которые нигде не заданы
--max-problems <n>остановиться после n проблем
$ maxicfg lint ./config --strict --warn-unused
config/base.yaml        ok
config/production.yaml  1 problem

  production.yaml:22:5  cache.ttl: "90" is not a valid duration
                        (did you mean "90s"?)

warning: schema key "tracing.sample_rate" is never set

maxicfg diff

Сравнить два источника или два профиля ключ за ключом.

maxicfg diff <a> <b> [flags]
ФлагОписание
--ignore-secretsпропускать ключи с пометкой secret
--only <prefix>ограничить ключами с указанным префиксом
--exit-codeвернуть 1, если найдены различия
--missing-onlyтолько ключи, присутствующие с одной стороны
$ maxicfg diff --profile staging --profile production --only database

~ database.pool_size  10 -> 40
~ database.timeout    5s -> 30s
+ database.replica_host              (only in production)

3 differences under "database"

maxicfg render

Отрендерить шаблон, подставив переменные окружения.

maxicfg render <template> [flags]
ФлагОписание
-o, --out <path>записать в файл вместо stdout
--env-file <path>загрузить переменные из dotenv-файла
--allow-emptyразрешить пустой результат для незаданных переменных
--checkзавершиться с ошибкой, если результат отличается от существующего файла

--check — тот самый флаг для CI: он проверяет, что закоммиченный отрендеренный файл соответствует шаблону, ничего при этом не записывая.

maxicfg scan

Искать учётные данные и типичные ошибки в конфигурационных файлах.

maxicfg scan [paths...] [flags]
$ maxicfg scan ./config

config/local.yaml:8    aws access key id
config/local.yaml:9    aws secret access key
config/staging.yaml:31 private key block
config/staging.yaml:44 database url with inline password

4 findings in 2 files

scan работает на сопоставлении с шаблонами и будет давать ложные срабатывания на примерах значений. Добавляйте пути в scan.ignore в файле проекта, а не отключайте команду целиком.

maxicfg fmt

Привести форматирование к единому виду: отступы, сортировка ключей, отсутствие пробелов в конце строк.

maxicfg fmt [paths...] [--check] [--sort-keys]

maxicfg schema

Сгенерировать заготовку схемы из существующих конфигурационных файлов.

$ maxicfg schema infer ./config/production.yaml --out config/schema.yaml
inferred 34 keys, 6 required, 3 enums
review the result before committing

Коды возврата

КодЗначение
0успех, сообщать нечего
1найдены проблемы (ошибки проверки, находки, расхождения с --exit-code)
2ошибка использования — неверные флаги или пропущенные аргументы
3файл не удалось прочитать или разобрать
4сама схема невалидна