ChioriCord Packages Manager (alpha WIP)
Find a file
2025-03-16 13:04:02 +04:00
cpm Ruff: Linter Autofix 2025-03-16 13:04:02 +04:00
.gitignore New: cpm v2.1 rf-v5 2022-10-16 11:11:58 +04:00
.python-version Feat: Change poetry to uv 2025-03-16 10:10:30 +04:00
changelog.md Repo: Fix some typos 2025-03-16 10:02:45 +04:00
crt.py release V2.0 rf-V5 2022-06-12 20:01:33 +04:00
index.toml New: cpm v2.1 rf-v5 2022-10-16 11:11:58 +04:00
LICENSE Edits to the Changelog.md 2022-10-15 14:32:55 +04:00
microcpm.py Micrp: Add micro cpm dump v1.6 rf-v4 2025-03-16 10:16:38 +04:00
packages.toml New: cpm v2.1 rf-v5 2022-10-16 11:11:58 +04:00
pyproject.toml Feat: Change poetry to uv 2025-03-16 10:10:30 +04:00
README.md Repo: Fix some typos 2025-03-16 10:02:45 +04:00
uv.lock Feat: Change poetry to uv 2025-03-16 10:10:30 +04:00

Chio Packages Manager

Маленькая самостоятельная Система управления пакетами Чио.

Cpm упрощает установку, обновление, удаление компонентов Чио.

Для чего CPM?

Предположим вы захотели установить себе Чио. Проблема в том, что репозиторий Чио скачивается только целиком. Это хорошо, когда вам нужен весь функционал, но зачастую это не так. Обычно требуется только ядро, пара плагинов и дополнительные компоненты к ним. Если вы скачали весь архив, то придётся самому удалять лишние. Только вот есть шанс удалить нужный компонент и Чио перестанет работать. Тогда придётся начинать работу с начала.

Теперь предположим, что вышла новая версия какого-либо компонента. Новая версия... новые функции, исправление старых багов и добавление новых. Как вы узнаете, что вышла новая версия? Не думаю, что вы будете время от времен6и заглядывать в репозиторий. А даже если и будете, то придётся скачивать весь архив... ну вы поняли.

Чтобы упростить весь этот процесс и была создана CPM!

# Краткая шпаргалка для использования cpm.
py cpm locate          # Поиск локальных пакетов и формирование индекса.
py cpm update          # Отдельное обновление данных источников.
py cpm upgrade         # Обновление пакетов.
py cpm install PACKAGE # Установить пакет "package".
py cpm remove PACKAGE  # Удалить пакет "package".

О CPM

Пойдём от простого к сложному.

Пакет

Это наименьшая единица cpm. Пакет может содержать себе необходимые файлы и директории. А также файл packages.toml с различной информацией о пакете.

Пример:

[cpm]
name= "Chio Packages Manager"
desc= "Управление пакетами Чио."
ver= "2.0 rf-V5"
build= 30
type= "pm"

В описание пакета входит:

имя тип описание
pid строка Уникальный packages ID
name строка Имя пакета
desc строка Краткое описание пакета
full_desc строка Полной описание пакета
ver строка Строка версии
build число Номер сборки пакета
type строка Тип пакета (ядро, движок)
groups список К каким группа принадлежит
authors список Авторы пакета
require список PID зависимости проекта

После попадания в Индекс:

Автоматически добавляются следующие поля.

имя тип описание
used список Кому для работы нужен пакет
files словарь Фалы и их хеши
path строка Путь к директории пакета
url строка Ссылка для загрузки файлов
multiple флаг Является ли пакет множеством пакетов

Что можно сделать с пакетом (Package):

  • Получить параметры пакета.
  • Проверить установлен ли пакет.
  • Посмотреть статус пакета.
  • Посмотреть полные параметры пакета.
  • Удалить пакет.

Пакетный индекс

Сами по себе пакеты не так полезны. Список пакетов выстраивается в пакетный индекс.

  • Поиск локальных пакетов.
  • Построение зависимостей пакетов.
  • Поиск проблем с пакетами.
  • Просмотр статистики об индексе пакетов.
  • Получение пакета.
  • Просмотр списка пакетов.
  • Удаление пакетов-сирот (если они не используются).

Пакетный менеджер

Управляет пакетными индексами.

  • Поиск локальных пакетов.
  • Удаление пакетов.
  • Просмотр информацию о пакетах.
  • Просмотр статуса пакетов.
  • Просмотр статистики индекса.
  • Загрузка обновлений.
  • Установка пакетов.

О версиях

Router File Version (rf-Vx):

В cpm 2.1 добавлены новые совместимые параметры.

  • V5 (cpm 2.0+): Изменены имена параметров пакета, и наименование файла.
  • V4 (cpm 1.6 - 2.0): изменён синтаксис PID для описание источников пакета.
  • V3 (cpm 1.5 - 1.6), (+V2): Списки файлов заменены на словари: путь - хеш. Это ускоряет обновления.
  • V2 (cpm 1.3 - 1.6): Приведён общий индекс, собираемый CPM.

Отличия версий Cpm

Здесь указаны последние версии каждого этапа. Для подробного изучения изменений загляните в changelog.md

cpm-full 2.1 Разделение проекта:

  • Более безопасное удаление пакетов
  • Исправлена загрузка описания пакета
  • Больше подсказок при сборке индекса

cpm 2.0: Переработка проекта.

  • Нарушается совместимость со старыми версиями.
  • Исправлена проблема фантомных пакетов.
  • Работает на rf-V5.
  • Сокращение ненужного функционала.
  • Рекомендуется переходить на cpm 2.1.

cpm 1.5: Продолжение разработки как отдельный проект.

  • Работает на rf-V3.
  • Поддержка нескольких индексов.
  • Не поддерживается.

cpm 1.3: разрабатывалась вместе с Чио как дополнительная утилита.

  • Компактная.
  • Более стабильная.
  • Функциональная.
  • Работает с rf-V2, частично rf-V3.
  • Не поддерживается.

Настройки cpm

Настройки cpm расположены в cpm_data/.

    ├── package_base.toml    # Параметры пакетов по умолчанию
    ├── repositories         # Загруженные глобальные индексы
    │   ├── chiohub.toml       # Глобальный индекс ChioHub (pentergust/chiohub)
    │   ├── {repo_name}.toml   # Глобальный индекс repo_name (???/repo_name)
    │   ├── ...                # Тут могут быть другие глобальные индексов
    │   └── cpm.toml           # Глобальный индекс для Cpm (pentergust/cpm)
    └── repositories.toml    # Файл определения глобальных индексов

package_base.toml

name = "package"
desc = "no desc"
full_desc = "no full desc"
ver = "1.0"
build = 1
type = "pm"
groups = []
authors = [ "Milinuri Nirvalen"]
require = []
used = []
path = ""
multiple = false

[files]

Если в файле packages.toml нету некоторых параметров, они берутся из package_base. Вы можете изменить параметры package_base на необходимые вам.

repositories.toml

[chiohub]
url = "https://notabug.org/pentergust/ChioHub/raw/master/"
updated = 1665850118

[cpm]
url = "https://notabug.org/pentergust/cpm/raw/master"
updated = 1665850118

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

Пример добавления репозитория:

[name]
url = "ссылка для загрузки файлов"
updated = 0

или:

echo "\n[name]\nurl= \"ссылка для загрузки файлов\"\nupdated= 0" >> cpm_data/repositories.toml