modulemanifest

package
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2026 License: Apache-2.0 Imports: 0 Imported by: 0

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

View Source
const DeliveryKeySuffix = ".manifest.yaml"

DeliveryKeySuffix — окончание ключа, под которым тот же документ приезжает В ДОСТАВКЕ. Полный ключ — имя модуля плюс это; собирает его DeliveryKey.

Отдельная величина, а не производная от FileName: совпадение хвоста есть сегодняшний факт, а не свойство. Свяжи их выражением — и первая же правка одной формы молча переписала бы вторую.

View Source
const FileName = "manifest.yaml"

FileName — имя, под которым модуль кладёт свой манифест В ДЕРЕВЕ.

Судится ДОСЛОВНО и только по базовому имени: рядом лежат чужие документы, и опознавать их нашей формой значило бы выдавать находку там, где её никто не писал.

Variables

This section is empty.

Functions

func DeliveryKey

func DeliveryKey(module string) string

DeliveryKey — ключ доставки для названного модуля.

Функция, а не образец для склейки у каждого читателя: склейка есть та же повторённая величина, только распределённая по вызывающим, где её уже не сосчитать.

Types

This section is empty.

Directories

Path Synopsis
Package modulemanifests — ПРОИЗВОДИТЕЛЬ ConfigMap с манифестами модулей (задача #1901).
Package modulemanifests — ПРОИЗВОДИТЕЛЬ ConfigMap с манифестами модулей (задача #1901).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL