# Каталог программ Siemens Дистрибутивы хранятся в `catalog`, формат метаданных описан в `schema/index.schema.json`. Названия и описания — на русском языке. ## Структура ```text catalog/ ├── index.yaml └── category/ ├── index.yaml └── program/ ├── index.yaml ├── files/ └── img/ ``` Каждая категория и программа имеет один `index.yaml`. Дочерние элементы определяются по папкам и не перечисляются в YAML. Все версии программы находятся в одном индексном файле. ## Категория ```yaml format: 1 type: category name: Название категории order: -10 description: Описание категории. ``` `order` необязателен; меньшее значение выводится раньше. ## Программа ```yaml format: 1 type: program name: Название программы summary: Короткое назначение программы для списка категории. description: |- Полное описание в Markdown. homepage: https://example.org source: https://github.com/example/project 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 size: 123456 sha256: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef additional_files: - path: files/manual.pdf description: Руководство пользователя ``` Обязательные поля программы: `format`, `type`, `name`, `summary`, `description`, `screenshots`, `versions`. Значения `platform`: `win32`, `win64`, `dos`, `java`, `j2me`. Значения `status`: `current`, `archived`. Файлы версий указываются в `versions[].files`, общие файлы — в `additional_files`. Пути файлов начинаются с `files/`, скриншотов — с `img/`. `size` содержит размер в байтах. Архивы хранятся через Git LFS. ## Команды ```shell pnpm install pnpm fill-metadata pnpm fill-metadata:check pnpm tree pnpm typecheck ``` `fill-metadata` заполняет `size` и `sha256`. Команда принимает путь к программе, категории или `index.yaml`. `tree` принимает путь и флаги `--paths`, `--versions`.