104 lines
3.9 KiB
Markdown
104 lines
3.9 KiB
Markdown
# Каталог программ 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 extract-archives /path/to/output
|
||
pnpm fill-metadata
|
||
pnpm fill-metadata:check
|
||
pnpm repack-archive path/to/archive.rar
|
||
pnpm screenshots --help
|
||
pnpm tree
|
||
pnpm typecheck
|
||
```
|
||
|
||
`extract-archives` рекурсивно распаковывает ZIP из `catalog` в заданный каталог,
|
||
сохраняет структуру категорий и программ и не перезаписывает существующие пути.
|
||
`fill-metadata` пересобирает
|
||
`catalog/files.yaml`. `tree` принимает путь и флаги
|
||
`--paths`, `--versions`. `repack-archive` принимает архив, EXE или папку,
|
||
создаёт совместимый с Windows XP ZIP и проверяет содержимое и timestamps; флаг
|
||
`--replace` удаляет исходный файл только после успешной проверки. Временный
|
||
каталог задаётся через `--temp-dir /tmp/codex/<task_name>`. `screenshots`
|
||
запускает программы на Windows-машине по SSH и снимает их окна.
|