maxicfg

Частые вопросы

Чем это отличается от валидатора JSON Schema?

JSON Schema выразительнее, и maxicfg не пытается с ней конкурировать. Разница в области применения: maxicfg работает с ключами через точку по нескольким объединённым файлам и знает об окружениях. Если нужно проверить один документ по богатой схеме — валидатор JSON Schema подойдёт лучше.

Он изменяет мои файлы?

Записывают что-либо только fmt и render, причём обе команды поддерживают --check для запуска в режиме чтения. Остальные команды только читают и печатают отчёт.

Может ли он читать конфигурацию из Consul, etcd или Vault?

Нет, и вряд ли это изменится. maxicfg работает с файлами в репозитории. Чтение из удалённых хранилищ потребовало бы аутентификации, кеширования и обработки частичных отказов — это была бы совсем другая по размеру утилита.

Почему ключи записываются через точку?

Потому что один и тот же логический ключ может быть вложенным в YAML и плоским в dotenv-файле. Запись через точку даёт единый способ назвать ключ независимо от формата, в котором он оказался.

Как обрабатываются якоря и алиасы YAML?

Якоря раскрываются до проверки, поэтому схема видит развёрнутый документ. fmt сохраняет якоря, а не разворачивает их на месте.

Достаточно ли он быстрый для большого репозитория?

Основное время уходит на разбор файлов. На репозитории примерно с 400 конфигурационными файлами общим объёмом 3 МБ полный lint занимает около 240 мс на ноутбуке. Файлы разбираются параллельно по всем доступным ядрам.

Поддерживается ли Windows?

Да. Публикуются бинарники для windows/amd64 и windows/arm64. Работа с путями нормализована, поэтому схемы, написанные на Linux, работают без изменений.

Что происходит при дублирующихся ключах в одном файле?

Дублирующийся ключ — это ошибка, а не молчаливое перекрытие. Парсеры YAML расходятся в том, какое вхождение побеждает, поэтому единственный безопасный вариант — отказаться обрабатывать файл.

Можно ли использовать его как библиотеку Go?

Пакеты внутри internal/ намеренно недоступны для импорта. Стабильный публичный API запланирован к версии 1.0, а до тех пор поддерживаемая точка входа — интерфейс командной строки.

Почему до сих пор не 1.0?

Две причины. В формате схемы остаются шероховатости в валидации списков, и формат вывода diff, вероятно, изменится после стабилизации сравнения профилей. И то, и другое было бы ломающим изменением, поэтому номер версии остаётся ниже 1.0, пока эти части не устоятся.

Как сообщить об ошибке?

Заведите issue в репозитории проекта, приложив вывод maxicfg version и минимальный конфигурационный файл, который воспроизводит проблему. Сначала уберите настоящие учётные данные — а если ошибка касается scan, замените их на очевидно поддельные значения, а не удаляйте строки целиком.