Documentation
¶
Overview ¶
Команда authzmap-tables пишет порождённые таблицы типов пакета `authzmap`.
Она — ТОНКАЯ: весь вывод живёт в `internal/authzmapgen`, потому что тот же вывод зовёт гейт свежести. Копия вывода внутри команды разошлась бы с гейтом молча, и гейт сверял бы файл с другим производителем.
ДВА КОРНЯ, И ОНИ РАЗНЫЕ (#61) ¶
`-root` — корень ПЛАТФОРМЫ: оттуда обходятся `services/*/manifest.yaml`. `-module` — корень ЭТОГО модуля: под ним лежит порождённый файл.
Пока служба жила внутри платформы, второй был префиксом первого, и один довод обслуживал оба. После разреза это РАЗНЫЕ деревья, и умолчание `-root .` означает уже не «корень платформы», а «только собственный манифест».
ПОЧЕМУ ОДНОГО МОДУЛЯ НЕДОСТАТОЧНО, И ЭТО ОТКАЗ, А НЕ СУЖЕНИЕ ¶
Таблица — МЕЖМОДУЛЬНЫЙ каталог: она отображает точечные имена ресурсов ВСЕХ модулей платформы в имена модели прав. Собранная из одного манифеста, она выглядит целой и молча теряет типы, а потерянный тип не резолвится краем — вопрос о нём не задаётся вовсе, и проверка выглядит пройденной.
Замер, ради которого guard заведён: прогон в самостоятельном клоне с умолчанием читал 1 манифест вместо 6 и отдавал таблицу на 7 ресурсов вместо 27 — с кодом 0. То есть `go generate` здесь ТИХО УНИЧТОЖИЛ БЫ таблицу, отчитавшись успехом.
Исходов четыре, и они различимы кодом возврата:
0 файл записан (либо уже совпадает) 1 обход дал находки либо порождать нечего — предпосылка исчезла 2 не записалось: путь недоступен, либо корень платформы не назван / не является деревом платформы — «условие не создано», третий исход