Частые вопросы
Чем это отличается от валидатора 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, замените их на очевидно поддельные
значения, а не удаляйте строки целиком.