Documentation
¶
Overview ¶
Package modulemanifest — ЕДИНСТВЕННОЕ объявление того, под каким именем адресуется манифест модуля платформы.
Форм ДВЕ, и они не выводятся друг из друга ¶
в дереве services/<модуль>/manifest.yaml ← FileName в доставке <модуль>.manifest.yaml ← DeliveryKey
Раскладку дерева доставка воспроизвести НЕ МОЖЕТ: ключ ConfigMap не принимает `/`, а в одном объекте ключ `manifest.yaml` бывает только один. Обе стороны замерены kubectl, и замер стоит в шапке читателя доставки (`services/iam/internal/manifest/delivery.go`, §«Почему ИМЯ файла здесь судится иначе»). Значит вторая форма — не отступление и не оплошность, а единственная исполнимая; вывести одну из другой нельзя ничем, кроме этого объявления.
Почему объявление живёт в pkg/, а не у читателя ¶
Читателей у имени ТРИ, и они в разных деревьях видимости: судья формы и обход модели внутри `services/iam/internal/`, производитель ConfigMap — в `tools/`. Правило `internal` запрещает третьему импортировать первых, поэтому «свести к одному объявлению у iam» неисполнимо by construction, и до этого пакета имя стояло тремя копиями — двумя константами и одним голым литералом.
Повторённое соглашение расходится МОЛЧА, и цена у него не «неаккуратно»: обход, разошедшийся с производителем, перестаёт находить часть манифестов и не даёт при этом ни одной находки. «Ноль находок» становится неотличимо от «ноль прочитанного».
Чего здесь НЕТ и почему ¶
Ни структур манифеста, ни его разбора, ни перечня модулей платформы: манифест адресован iam (`apiVersion: iam/v1`), а членство модуля принадлежит iam и из `pkg/` не собирается. Переезд ФОРМЫ сюда потребовал бы второй копии перечня модулей — то есть ровно того класса, ради которого этот пакет и заведён. Здесь только ИМЯ: величина, у которой владельца не было вовсе.
Чем держится ¶
Гейт дерева `internal/repohygiene` TestModuleManifestFileNameIsDeclaredExactlyOnce: он судит узел-литерал разобранного исходника, сравнивает значение дословно, печатает объём осмотренного и падает, когда объявления у этого пакета не стало, — то есть и на исчезнувшем предмете тоже.
Index ¶
Constants ¶
const DeliveryKeySuffix = ".manifest.yaml"
DeliveryKeySuffix — окончание ключа, под которым тот же документ приезжает В ДОСТАВКЕ. Полный ключ — имя модуля плюс это; собирает его DeliveryKey.
Отдельная величина, а не производная от FileName: совпадение хвоста есть сегодняшний факт, а не свойство. Свяжи их выражением — и первая же правка одной формы молча переписала бы вторую.
const FileName = "manifest.yaml"
FileName — имя, под которым модуль кладёт свой манифест В ДЕРЕВЕ.
Судится ДОСЛОВНО и только по базовому имени: рядом лежат чужие документы, и опознавать их нашей формой значило бы выдавать находку там, где её никто не писал.
Variables ¶
This section is empty.
Functions ¶
func DeliveryKey ¶
DeliveryKey — ключ доставки для названного модуля.
Функция, а не образец для склейки у каждого читателя: склейка есть та же повторённая величина, только распределённая по вызывающим, где её уже не сосчитать.
Types ¶
This section is empty.