modulemanifests

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2026 License: AGPL-3.0 Imports: 6 Imported by: 0

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 Posture

type Posture string

Posture — посадка, в которой снят перечень.

const (
	// PlatformTree — модуль лежит в дереве платформы: читаются манифесты всех её
	// модулей.
	PlatformTree Posture = "дерево платформы"
	// StandaloneModule — самостоятельный клон: читается манифест самого модуля.
	StandaloneModule Posture = "самостоятельный клон"
)

type Set

type Set struct {
	// Posture — какая из двух посадок дала этот перечень.
	Posture Posture
	// Root — корень, от которого координаты ниже отсчитаны.
	Root string
	// Files — координаты манифестов ОТ Root, отсортированные.
	Files []string
}

Set — перечень манифестов и посадка, в которой он снят.

func Available

func Available(start string) (Set, error)

Available — манифесты, доступные в посадке каталога start.

Ошибка означает «проверка НЕ ИСПОЛНЯЛАСЬ»: ни одной из двух посадок назвать не удалось либо в названной не нашлось ни одного манифеста. Пустой перечень ошибкой НЕ возвращается молча — вызывающий обязан отличать его от согласия.

func (Set) Census

func (s Set) Census() string

Census — строка объёма осмотренного. Печатается ВСЕГДА, а не только при находке: без неё «расхождений 0» неотличимо от «прочитано 0».

Jump to

Keyboard shortcuts

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