Documentation
¶
Overview ¶
Package modulemanifests — манифесты модулей, ДОСТУПНЫЕ ПРОБЕ В ЭТОЙ ПОСАДКЕ.
───────────────────────────────────────────────────────────────────────────── ПРЕДМЕТ (#2377)
Сверки «объявлено манифестом ↔ лежит в живой базе» имеют стороны в РАЗНЫХ деревьях: манифесты модулей — у платформы (`services/*/manifest.yaml`), база и миграции — у службы. Прежде обе стороны брались обходом `<корень>/services`, и после разреза этот каталог рядом с модулем не резолвится: сверка становилась невыразимой, а расхождение объявления с фактом переставало находиться — ровно то, ради чего раздел `roles`/`seed` манифеста и заведён.
───────────────────────────────────────────────────────────────────────────── ЧТО ЗДЕСЬ РЕШЕНО, А ЧТО НЕТ
Решено ОДНО: перечень манифестов есть ФУНКЦИЯ ПОСАДКИ, и он никогда не пуст.
Имя файла манифеста здесь НЕ ПИШЕТСЯ своей рукой: у него один владелец в фундаменте и ДВЕ формы — в дереве и в доставке. Объявление, знающее одну, обещало бы читателю полноту, которой у него нет. Берётся оно у читателя СВОЕЙ службы (`internal/manifest`), а не прямым импортом: направление «служба → пакет класса платформы» запрещено целевой раскладкой, и новое такое ребро есть находка даже там, где сегодня всё собирается.
дерево платформы ЕСТЬ — читаются манифесты ВСЕХ модулей платформы, ровно как
прежде: числа переписей в монорепо не меняются;
дерева платформы НЕТ — читается манифест САМОГО МОДУЛЯ, входящий в его
поставку. Сверка сужается, но НЕ ИСЧЕЗАЕТ, и её
объём объявляется числом.
НЕ решено и решаться здесь не должно: как манифесты СОСЕДЕЙ доезжают до самостоятельной службы. Они доезжают ДОСТАВКОЙ в рантайме (именованный ConfigMap; у доставки есть производитель, и это предмет платформенного гейта), а не деревом сборки. Заводить здесь их копию значило бы завести второе место об одном предмете, которое после разреза не сверяется НИЧЕМ.
───────────────────────────────────────────────────────────────────────────── ПОЧЕМУ ПРОПУСКА НЕТ
Пропуск здесь означал бы «сторожа больше нет», и молчание было бы неотличимо от исправной работы — тот самый тихий класс, ради которого пакет и заведён. Поэтому обе посадки дают ОТВЕТ, а перепись печатает, какой именно и сколько манифестов прочитано: «ноль находок» обязано быть отличимо от «прочитан один из шести».
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Set ¶
type Set struct {
// Posture — какая из двух посадок дала этот перечень.
Posture Posture
// Root — корень, от которого координаты ниже отсчитаны.
Root string
// Files — координаты манифестов ОТ Root, отсортированные.
Files []string
}
Set — перечень манифестов и посадка, в которой он снят.
func Available ¶
Available — манифесты, доступные в посадке каталога start.
Ошибка означает «проверка НЕ ИСПОЛНЯЛАСЬ»: ни одной из двух посадок назвать не удалось либо в названной не нашлось ни одного манифеста. Пустой перечень ошибкой НЕ возвращается молча — вызывающий обязан отличать его от согласия.