soul-lint
Офлайн-линтер: статически проверяет конфиги, Destiny, сервисы, сценарии и манифесты плагинов, ничего не исполняя. Ставится на рабочую станцию оператора или в CI — чтобы ловить ошибки до применения на хостах.
Destiny, сценарии и сервисы — это YAML с типизированной схемой и шаблонными выражениями. soul-lint валидирует их форму и контракт локально, не обращаясь к Keeper-у и не трогая хосты. Типовое применение — pre-commit / CI-гейт в репозитории сервиса: PR не проходит, если артефакт не валиден.
Подкоманды
Заголовок раздела «Подкоманды»soul-lint validate-config <path> [--json] # keeper.yml или soul.ymlsoul-lint validate-destiny <path> [--json] # destiny.yml (корневой манифест Destiny)soul-lint validate-service <path> [--json] # service.yml (корневой манифест сервиса)soul-lint validate-scenario <path> [--json] # scenario/<name>/main.ymlsoul-lint validate-manifest <path> [--json] # manifest.yaml плагинаsoul-lint plugin-init <namespace>/<name> [flags] # scaffold нового SoulModule-плагина| Подкоманда | Что валидирует |
|---|---|
validate-config | конфиг Keeper-а (keeper.yml) или агента (soul.yml) |
validate-destiny | корневой манифест Destiny |
validate-service | корневой манифест сервиса |
validate-scenario | сценарий (scenario/<name>/main.yml) |
validate-manifest | манифест плагина (kind: soul_module / cloud_driver / ssh_provider) |
plugin-init | генерирует каркас нового SoulModule-плагина |
Флаг --json переключает вывод на машиночитаемый формат (удобно в CI).
Exit-коды
Заголовок раздела «Exit-коды»| Код | Значение |
|---|---|
0 | валидно, ошибок нет |
1 | найдены ошибки валидации |
2 | I/O-ошибка или неверный вызов (usage) |
В CI-гейте опираются на exit-код: ненулевой завершает пайплайн.
Использование в CI
Заголовок раздела «Использование в CI»# пример шага CI: провалить пайплайн, если какой-либо артефакт невалиденsoul-lint validate-service ./service.ymlsoul-lint validate-scenario ./scenario/create/main.yml --jsonScaffold плагина
Заголовок раздела «Scaffold плагина»Авторам custom-модулей soul-lint plugin-init <namespace>/<name> генерирует готовый каркас SoulModule-плагина:
soul-lint plugin-init official/my-module --out ./soul-mod-my-module --author "Your Name"Флаги: --out DIR (каталог вывода), --description TEXT, --author NAME, --force (перезаписать существующий каталог).
Установка
Заголовок раздела «Установка»soul-lint ставится из пакета soul-stack-soul-lint (только CLI, без демона и конфига), бинарного релиза или сборки. См. Установка из пакетов и Из бинарных релизов.