Skip to content

Indexer #10

@TOwInOK

Description

@TOwInOK

Что это такое

Coral Indexer - решает проблему дистрибуции модификаций (любого контента).

Как работает

Indexer хранит только:

  • ссылка на git репозиторий
  • ссылка на ветку git, которую сервис будет модерировать и наблюдать
  • тег (присвоенный пользователем)
  • Meta информацию с коммита

Meta

Каждый проект должен содержать в себе манифест файл, который содержит в себе всю ифнормацию для последующей индексации и дистрибуции.

Ссылки на git

Данный ссылки должны гарантировать наличие модификации в открытом доступе и должны всегда быть доступны для скачивания пользователем

Хранит ли indexer сами коммиты

Нет, не хранит.
Хранит лишь meta.

Теги и версионирование

После создания пакета в личном кабинете и биндинге проекта к git репозиторию, будет подгружен манифест (при его наличии, иначе fallback).

Сам indexer смотрит в предоставленную ветку (по умолчанию main) и ориентируясь на информацию из manifest предоставляет возможность присвоить ему тег/версию релиза в системе indexer.
Если manifest'а не будет, то и в списке коммитов не будет данного коммита.

Данная операция делается в ручную с подтвержением 2FA/по почте.

Отображение иконки и банера

Indexer не хранит исходные файлы. Он ориентируется на папку .content в репозитрии и ищет в ней icon.webp и banner.webp.
Файлы долны быть обязательно в webp формате.

Indexer основываясь на этих линках из последнего релизного тега будет отображать информацию, а так же времено хранить кэш.

Что должно быть в проекте (для контент паков)

все пути статичны и не подлежат изменению пользователем

  • .content - для контента на сайте
    • icon.webp
    • banner.webp
  • pack - source контент пака
  • manifest.toml - содержит в себе информацию для indexer

Какую информацию хранит в себе manifest.toml

# workspace is optional and future feature
[workspace]
resolver = 1
name = "some_cool_pack" # only "a-z and _"
version = "1.2.3"
kind = "Pack"

# if workspace is Some, pack needs to be None
# if workspace is None, pack needs to be Some
[pack]
name = "some_cool_pack" # only "a-z and _"
version = "1.2.3"
kind = "Pack"

[dependecies]
# full version
name = { version = "1.2.0", git = "http or git link", features = ["some", "cool" ] }
# or just version
name = ""

[dev-dependecies]
# full version
name = { version = "1.2.0", git = "http or git link", features = ["some", "cool" ] }
# or just version
name = ""

[other future things...]

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or request
No fields configured for Feature.

Projects

Status
Doc

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions