# Каталог программ Siemens Дистрибутивы хранятся в `catalog`, формат метаданных описан в `schema/index.schema.json`. Названия и описания — на русском языке. ## Структура ```text catalog/ ├── index.md ├── files.yaml └── category/ ├── index.md └── program/ ├── index.md ├── files/ └── img/ ``` Каждая категория и программа имеет один `index.md`. YAML Front Matter содержит метаданные, тело файла — описание в Markdown. Дочерние элементы определяются по папкам и не перечисляются в метаданных. Все версии программы находятся в одном индексном файле. ## Категория ```md --- format: 1 type: category name: Название категории order: -10 --- Описание категории. ``` `order` необязателен; меньшее значение выводится раньше. ## Программа ```md --- format: 1 type: program name: Название программы summary: Короткое назначение программы для списка категории. homepage: https://example.org source: https://github.com/example/project forum: https://example.org/forum/topic author: Автор screenshots: - img/screenshot.png versions: - version: "1.2.0" status: current released: "2007-08-14" files: - path: files/program-1.2.0.zip description: Дистрибутив platform: win32 additional_files: - path: files/manual.pdf description: Руководство пользователя --- Полное описание программы в Markdown. ``` Обязательные поля программы: `format`, `type`, `name`, `summary`, `screenshots`, `versions`. Тело Markdown также обязательно. Значения `platform`: `win32`, `win64`, `dos`, `java`, `j2me`. Значения `status`: `current`, `archived`. Файлы версий указываются в `versions[].files`, общие файлы — в `additional_files`. Пути файлов начинаются с `files/`, скриншотов — с `img/`. Дистрибутивы хранятся в совместимых с Windows XP ZIP-архивах через Git LFS; отдельные EXE также упаковываются в ZIP. Размеры и SHA-256 всех файлов находятся в автоматически создаваемом `catalog/files.yaml`, а не в индексах программ. ## Команды ```shell pnpm install pnpm fill-metadata pnpm fill-metadata:check pnpm repack-archive path/to/archive.rar pnpm tree pnpm typecheck ``` `fill-metadata` пересобирает `catalog/files.yaml`. `tree` принимает путь и флаги `--paths`, `--versions`. `repack-archive` создаёт совместимый с Windows XP ZIP и проверяет содержимое и timestamps; флаг `--replace` удаляет исходник только после успешной проверки.