Move catalog indexes to Markdown front matter
This commit is contained in:
@@ -6,32 +6,42 @@
|
||||
## Структура
|
||||
|
||||
- Все категории и программы находятся внутри корневой папки `catalog`.
|
||||
`catalog/index.yaml` описывает корневую категорию.
|
||||
`catalog/index.md` описывает корневую категорию.
|
||||
- `catalog/files.yaml` содержит размеры и SHA-256 всех файлов программ. Он
|
||||
создаётся командой `pnpm fill-metadata` и вручную не редактируется.
|
||||
- Каждая категория и каждая программа внутри `catalog` находятся в собственной
|
||||
папке и содержат ровно один файл `index.yaml`.
|
||||
папке и содержат ровно один файл `index.md`.
|
||||
- Вложенность категорий не ограничена. Дочерние категории и программы
|
||||
определяются по файловой структуре и не перечисляются в индексе категории.
|
||||
- Имя папки — стабильный идентификатор. Используй строчные латинские буквы,
|
||||
цифры, дефис и подчёркивание.
|
||||
- В папке программы все загружаемые файлы находятся в `files`, а скриншоты — в
|
||||
`img`.
|
||||
- Не создавай отдельные YAML-файлы или папки метаданных для версий. Все версии
|
||||
описываются в `versions` единственного `index.yaml` программы.
|
||||
- Папки без `index.yaml`, например `schema`, `files` и `img`, не являются
|
||||
- Не создавай отдельные файлы или папки метаданных для версий. Все версии
|
||||
описываются в `versions` YAML Front Matter единственного `index.md` программы.
|
||||
- Папки без `index.md`, например `schema`, `files` и `img`, не являются
|
||||
категориями.
|
||||
|
||||
## Формат index.md
|
||||
|
||||
Каждый `index.md` состоит из YAML Front Matter между строками `---` и
|
||||
обязательного Markdown-тела. Front Matter содержит только метаданные, а тело —
|
||||
описание категории или программы. Поле `description` в Front Matter не
|
||||
используй.
|
||||
|
||||
## YAML категории
|
||||
|
||||
Используй только следующие обязательные поля и сохраняй их порядок:
|
||||
Используй следующие поля Front Matter и сохраняй их порядок:
|
||||
|
||||
```yaml
|
||||
```md
|
||||
---
|
||||
format: 1
|
||||
type: category
|
||||
name: Русское название категории
|
||||
order: -10
|
||||
description: Описание категории на русском языке.
|
||||
---
|
||||
|
||||
Описание категории на русском языке.
|
||||
```
|
||||
|
||||
`order` — необязательное целое число для сортировки соседних категорий. Меньшее
|
||||
@@ -46,16 +56,19 @@ description: Описание категории на русском языке.
|
||||
2. `type: program` — обязательное поле.
|
||||
3. `name` — обязательное официальное название программы.
|
||||
4. `summary` — обязательное короткое описание программы на русском языке.
|
||||
5. `description` — обязательное подробное описание на русском языке в формате
|
||||
Markdown.
|
||||
6. `homepage` — необязательный URL домашней страницы.
|
||||
7. `source` — необязательный URL исходного кода.
|
||||
8. `forum` — необязательный URL темы программы на форуме.
|
||||
9. `author` — необязательное имя автора или название организации-разработчика.
|
||||
10. `screenshots` — обязательный массив путей; используй `[]`, если изображений
|
||||
5. `homepage` — необязательный URL домашней страницы.
|
||||
6. `source` — необязательный URL исходного кода.
|
||||
7. `forum` — необязательный URL темы программы на форуме.
|
||||
8. `author` — необязательное имя автора или название организации-разработчика.
|
||||
9. `screenshots` — обязательный массив путей; используй `[]`, если изображений
|
||||
нет.
|
||||
11. `versions` — обязательный непустой массив версий.
|
||||
12. `additional_files` — необязательный массив файлов, не привязанных к версии.
|
||||
10. `versions` — обязательный непустой массив версий.
|
||||
11. `additional_files` — необязательный массив файлов, не привязанных к версии.
|
||||
|
||||
После закрывающей строки `---` размести обязательное подробное описание
|
||||
программы на русском языке в обычном Markdown. Не добавляй в тело заголовок с
|
||||
названием программы: `name` уже содержит название, а генератор сам создаёт
|
||||
заголовок страницы.
|
||||
|
||||
Новые версии добавляй в начало `versions`, от новых к старым. Каждая версия
|
||||
имеет такой вид:
|
||||
@@ -100,7 +113,8 @@ SHA-256 не добавляй в индекс программы: они хра
|
||||
чего она нужна и с какими телефонами или форматами работает. Опирайся на полное
|
||||
описание и технический смысл программы, а не на единый шаблон. Не используй
|
||||
оценочные усилители вроде «комплексная», «универсальная», «мощная» или
|
||||
«полноценная».
|
||||
«полноценная». Храни `summary` во Front Matter и не вычисляй его автоматически
|
||||
из первого абзаца Markdown-тела.
|
||||
|
||||
Файлы, которые подходят ко всем версиям или существуют отдельно от релиза,
|
||||
помещай в `additional_files`, а не внутрь случайной версии:
|
||||
@@ -121,10 +135,9 @@ additional_files:
|
||||
явные опечатки и очевидные грамматические ошибки.
|
||||
- Сохраняй полноту исходного описания. Не сокращай перечень возможностей до
|
||||
общего пересказа и не удаляй значимые технические подробности.
|
||||
- Содержимое каждого `description` интерпретируется как Markdown. Для длинного
|
||||
описания со списком используй литеральный блок `|-` и Markdown-списки; для
|
||||
обычного абзаца, перенесённого на несколько строк, используй `>-`. Не вставляй
|
||||
HTML-разметку.
|
||||
- Основное описание находится в Markdown-теле `index.md`; пиши его как обычный
|
||||
Markdown без YAML-отступов и литеральных блоков. Поля `description` версий и
|
||||
файлов остаются обычными строками YAML. Не вставляй HTML-разметку.
|
||||
- Каждый пункт Markdown-списка начинай с заглавной буквы.
|
||||
- Не выдумывай даты, ссылки, возможности или платформы. Неизвестное
|
||||
необязательное поле лучше не добавлять.
|
||||
@@ -150,7 +163,7 @@ additional_files:
|
||||
имена, содержимое и время изменения файлов. По умолчанию исходник остаётся;
|
||||
`--replace` используй только когда его нужно удалить после успешной проверки.
|
||||
Для другого пути назначения используй `--output <путь>`.
|
||||
- После перепаковки замени путь в `index.yaml` и выполни
|
||||
- После перепаковки замени путь в `index.md` и выполни
|
||||
`pnpm fill-metadata`, чтобы обновить `catalog/files.yaml`.
|
||||
- Архивы должны проходить через Git LFS согласно `.gitattributes`. Остальные
|
||||
файлы хранятся в обычном Git.
|
||||
@@ -159,6 +172,8 @@ additional_files:
|
||||
|
||||
- Кодировка — UTF-8, окончания строк — LF, отступ — два пробела, табуляция
|
||||
запрещена.
|
||||
- Максимальная длина строки во Front Matter — 140 символов. Короткое строковое
|
||||
значение, включая `summary`, не переноси, если оно помещается в этот лимит.
|
||||
- Версии и даты всегда заключай в двойные кавычки.
|
||||
- Дата имеет формат `YYYY-MM-DD`.
|
||||
- Не используй YAML-теги, anchors, aliases и merge keys.
|
||||
@@ -168,7 +183,8 @@ additional_files:
|
||||
|
||||
Перед завершением изменения:
|
||||
|
||||
1. Проверь синтаксис всех затронутых `index.yaml` безопасным YAML-парсером.
|
||||
1. Проверь YAML Front Matter всех затронутых `index.md` безопасным YAML-парсером
|
||||
и убедись, что Markdown-тело не пустое.
|
||||
2. Проверь их по `schema/index.schema.json` валидатором JSON Schema Draft 2020-12,
|
||||
если он доступен.
|
||||
3. Выполни `pnpm fill-metadata`, затем `pnpm fill-metadata:check`. Команда
|
||||
|
||||
Reference in New Issue
Block a user