Repack software and centralize file metadata

This commit is contained in:
2026-08-18 01:08:41 +03:00
parent fe0ad7cf70
commit 570fb54805
174 changed files with 760 additions and 650 deletions
+14 -13
View File
@@ -1,12 +1,14 @@
# Правила ведения каталога
Эти правила действуют для всего репозитория. Перед изменением метаданных сверяйся
с `schema/index.schema.json`. Не добавляй поля, которых нет в схеме.
со схемами в `schema`. Не добавляй поля, которых нет в схеме.
## Структура
- Все категории и программы находятся внутри корневой папки `catalog`.
`catalog/index.yaml` описывает корневую категорию.
- `catalog/files.yaml` содержит размеры и SHA-256 всех файлов программ. Он
создаётся командой `pnpm fill-metadata` и вручную не редактируется.
- Каждая категория и каждая программа внутри `catalog` находятся в собственной
папке и содержат ровно один файл `index.yaml`.
- Вложенность категорий не ограничена. Дочерние категории и программы
@@ -65,8 +67,6 @@ description: Описание категории на русском языке.
- path: files/program-1.2.0.zip
description: Назначение файла на русском языке
platform: win32
size: 123456
sha256: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
```
Поля версии располагай в порядке `version`, `status`, `released`, `description`,
@@ -83,9 +83,9 @@ description: Описание категории на русском языке.
`win64`, `dos`, `java` или `j2me`. Для Windows разрядность входит в название
платформы; отдельное поле `architecture` не используется.
Поля файла располагай в порядке `path`, `description`, `platform`, `size`,
`sha256`. `size` содержит размер файла в байтах. Поля `size` и `sha256`
заполняются командой `pnpm fill-metadata` и вручную не редактируются.
Поля файла располагай в порядке `path`, `description`, `platform`. Размеры и
SHA-256 не добавляй в индекс программы: они хранятся только в автоматически
создаваемом `catalog/files.yaml`.
### Короткое описание
@@ -131,8 +131,11 @@ additional_files:
- Абсолютные пути, `..` и обратная косая черта запрещены.
- Каждый путь из YAML должен указывать на существующий файл.
- Один файл нельзя одновременно указывать в `versions` и `additional_files`.
- Для каждого добавленного файла указывай размер в байтах и SHA-256 в нижнем
регистре.
- Дистрибутивы и отдельные исполняемые файлы храни в ZIP, совместимом со
встроенным распаковщиком Windows XP: методы Store или Deflate, без шифрования
и Zip64. Не добавляй RAR, 7z и незапакованные EXE.
- При перепаковке сохраняй имена, содержимое и время изменения файлов внутри
архива.
- Архивы должны проходить через Git LFS согласно `.gitattributes`. Остальные
файлы хранятся в обычном Git.
@@ -141,7 +144,7 @@ additional_files:
- Кодировка — UTF-8, окончания строк — LF, отступ — два пробела, табуляция
запрещена.
- Версии и даты всегда заключай в двойные кавычки.
- Дата имеет формат `YYYY-MM-DD`, SHA-256 — ровно 64 шестнадцатеричных символа.
- Дата имеет формат `YYYY-MM-DD`.
- Не используй YAML-теги, anchors, aliases и merge keys.
- Не допускай неизвестных полей и дубликатов в массивах.
@@ -152,10 +155,8 @@ additional_files:
1. Проверь синтаксис всех затронутых `index.yaml` безопасным YAML-парсером.
2. Проверь их по `schema/index.schema.json` валидатором JSON Schema Draft 2020-12,
если он доступен.
3. Убедись, что все пути существуют, а их размеры и SHA-256 совпадают с
метаданными. Для заполнения и обновления используй
`pnpm fill-metadata [путь]`, для проверки без изменения файлов —
`pnpm fill-metadata:check [путь]`.
3. Выполни `pnpm fill-metadata`, затем `pnpm fill-metadata:check`. Команда
пересобирает `catalog/files.yaml` для всего каталога.
4. Для каждого нового архива выполни `git check-attr filter -- <путь>` и
убедись, что значение равно `lfs`.
5. Выполни `git diff --check`.