Repack software and centralize file metadata
This commit is contained in:
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user