Add Siemens software catalog
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# Правила ведения каталога
|
||||
|
||||
Эти правила действуют для всего репозитория. Перед изменением метаданных сверяйся
|
||||
с `schema/index.schema.json`. Не добавляй поля, которых нет в схеме.
|
||||
|
||||
## Структура
|
||||
|
||||
- Корень репозитория является корнем каталога; папку `catalog` создавать не
|
||||
нужно.
|
||||
- Каждая категория и каждая программа находятся в собственной папке и содержат
|
||||
ровно один файл `index.yaml`.
|
||||
- Вложенность категорий не ограничена. Дочерние категории и программы
|
||||
определяются по файловой структуре и не перечисляются в индексе категории.
|
||||
- Имя папки — стабильный идентификатор. Используй строчные латинские буквы,
|
||||
цифры, дефис и подчёркивание.
|
||||
- В папке программы все загружаемые файлы находятся в `files`, а скриншоты — в
|
||||
`img`.
|
||||
- Не создавай отдельные YAML-файлы или папки метаданных для версий. Все версии
|
||||
описываются в `versions` единственного `index.yaml` программы.
|
||||
- Папки без `index.yaml`, например `schema`, `files` и `img`, не являются
|
||||
категориями.
|
||||
|
||||
## YAML категории
|
||||
|
||||
Используй только следующие обязательные поля и сохраняй их порядок:
|
||||
|
||||
```yaml
|
||||
format: 1
|
||||
type: category
|
||||
name: Русское название категории
|
||||
description: Описание категории на русском языке.
|
||||
```
|
||||
|
||||
## YAML программы
|
||||
|
||||
Поля программы располагай в следующем порядке:
|
||||
|
||||
1. `format: 1` — обязательное поле.
|
||||
2. `type: program` — обязательное поле.
|
||||
3. `name` — обязательное официальное название программы.
|
||||
4. `description` — обязательное подробное описание на русском языке в формате
|
||||
Markdown.
|
||||
5. `homepage` — необязательный URL домашней страницы.
|
||||
6. `source` — необязательный URL исходного кода.
|
||||
7. `screenshots` — обязательный массив путей; используй `[]`, если изображений
|
||||
нет.
|
||||
8. `versions` — обязательный непустой массив версий.
|
||||
9. `additional_files` — необязательный массив файлов, не привязанных к версии.
|
||||
|
||||
Новые версии добавляй в начало `versions`, от новых к старым. Каждая версия
|
||||
имеет такой вид:
|
||||
|
||||
```yaml
|
||||
- version: "1.2.0"
|
||||
status: current
|
||||
released: "2007-08-14"
|
||||
files:
|
||||
- path: files/program-1.2.0.zip
|
||||
description: Назначение файла на русском языке
|
||||
platform: win32
|
||||
sha256: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
|
||||
```
|
||||
|
||||
Поля версии располагай в порядке `version`, `status`, `released`, `description`,
|
||||
`files`. Обязательны только `version` и непустой массив `files`. Необязательный
|
||||
`status` принимает `current` для актуальной версии и `archived` для устаревшей,
|
||||
сохранённой ради архива. Если статусы используются у программы, указывай их у
|
||||
всех её версий. Поле `released` добавляй только при наличии достоверной даты.
|
||||
Не переноси changelog в `description` версии и не добавляй это поле для полноты.
|
||||
Оно допустимо только в особом случае, когда нужно зафиксировать существенное
|
||||
ограничение, которое нельзя выразить номером версии или описанием конкретного
|
||||
файла.
|
||||
|
||||
Необязательное поле файла `platform` принимает одно из значений: `win32`,
|
||||
`win64`, `dos`, `java` или `j2me`. Для Windows разрядность входит в название
|
||||
платформы; отдельное поле `architecture` не используется.
|
||||
|
||||
Файлы, которые подходят ко всем версиям или существуют отдельно от релиза,
|
||||
помещай в `additional_files`, а не внутрь случайной версии:
|
||||
|
||||
```yaml
|
||||
additional_files:
|
||||
- path: files/manual.pdf
|
||||
description: Руководство пользователя
|
||||
```
|
||||
|
||||
## Текст и достоверность
|
||||
|
||||
- Названия категорий, описания программ, версий и файлов пиши на русском языке.
|
||||
Официальные названия продуктов и технологий не переводи.
|
||||
- Сохраняй полноту исходного описания. Не сокращай перечень возможностей до
|
||||
общего пересказа и не удаляй значимые технические подробности.
|
||||
- Содержимое каждого `description` интерпретируется как Markdown. Для длинного
|
||||
описания со списком используй литеральный блок `|-` и Markdown-списки; для
|
||||
обычного абзаца, перенесённого на несколько строк, используй `>-`. Не вставляй
|
||||
HTML-разметку.
|
||||
- Не выдумывай даты, ссылки, возможности или платформы. Неизвестное
|
||||
необязательное поле лучше не добавлять.
|
||||
- Сначала пытайся определить версию по странице, имени файла, README и
|
||||
метаданным бинарника. Если номер версии нигде не указан и достоверно получить
|
||||
его невозможно, используй каталоговое значение `version: "1.0"`. Не выводи
|
||||
номер версии из даты сборки.
|
||||
- Если источник содержит только текущую версию, добавляй только её. Не ищи
|
||||
более ранние архивы в Wayback Machine без отдельного указания пользователя.
|
||||
|
||||
## Пути и файлы
|
||||
|
||||
- Все пути относительны папке программы и используют `/`.
|
||||
- Путь загружаемого файла начинается с `files/`; путь скриншота — с `img/`.
|
||||
- Абсолютные пути, `..` и обратная косая черта запрещены.
|
||||
- Каждый путь из YAML должен указывать на существующий файл.
|
||||
- Один файл нельзя одновременно указывать в `versions` и `additional_files`.
|
||||
- Для каждого добавленного файла вычисляй и указывай SHA-256 в нижнем регистре.
|
||||
- Архивы должны проходить через Git LFS согласно `.gitattributes`. Остальные
|
||||
файлы хранятся в обычном Git.
|
||||
|
||||
## Стиль YAML
|
||||
|
||||
- Кодировка — UTF-8, окончания строк — LF, отступ — два пробела, табуляция
|
||||
запрещена.
|
||||
- Версии и даты всегда заключай в двойные кавычки.
|
||||
- Дата имеет формат `YYYY-MM-DD`, SHA-256 — ровно 64 шестнадцатеричных символа.
|
||||
- Не используй YAML-теги, anchors, aliases и merge keys.
|
||||
- Не допускай неизвестных полей и дубликатов в массивах.
|
||||
|
||||
## Проверка
|
||||
|
||||
Перед завершением изменения:
|
||||
|
||||
1. Проверь синтаксис всех затронутых `index.yaml` безопасным YAML-парсером.
|
||||
2. Проверь их по `schema/index.schema.json` валидатором JSON Schema Draft 2020-12,
|
||||
если он доступен.
|
||||
3. Убедись, что все пути существуют и их SHA-256 совпадает с метаданными.
|
||||
Для заполнения и обновления сумм используй `pnpm sha256 [путь]`, для проверки
|
||||
без изменения файлов — `pnpm sha256:check [путь]`.
|
||||
4. Для каждого нового архива выполни `git check-attr filter -- <путь>` и
|
||||
убедись, что значение равно `lfs`.
|
||||
5. Выполни `git diff --check`.
|
||||
Reference in New Issue
Block a user