Skip to content
 
 

Repository files navigation

depos

Release Тестирование Статус порога качества License: MIT

depos - инструмент для анализа и обновления версий зависимостей в манифесте пакета OneScript.

  • Читает манифесты packagedef и opm-metadata.xml.
  • Обновляет версии зависимостей в packagedef до последней, минорной или патч-версии.
  • Выявляет отсутствующие, неиспользуемые и неустановленные зависимости.
  • Обнаруживает конфликты версий установленных пакетов и транзитивных зависимостей.

Important

depos не является пакетным менеджером и не устанавливает пакеты. Для установки используйте opm install после обновления манифеста.

Оглавление

Установка

Для работы требуется OneScript 2.1.0 или новее. Версия OneScript 1.9.3 поддерживалась до depos 0.4.0 включительно.

opm install depos

Быстрый старт

# Перейти в каталог проекта
cd path/to/project

# Проверить зависимости на наличие проблем
depos doctor

# Проверить доступные обновления
depos check

# Обновить версии зависимостей в packagedef
depos upgrade

# Установить обновленные пакеты
opm install

check

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

Синтаксис:

depos check [-m|--manifest <путь>] [-p|--package <имя>] [-d|--deprecated]
            [-f|--filter <выражение>] [-x|--exclude <выражение>]
            [-t|--target <тип>] [-o|--output <файл>]
            [--registry <адрес|имя>] [--registry-proxy <URL>]
Опция Описание
-m, --manifest <путь> Путь к файлу манифеста или его каталогу. (по умолчанию: текущая директория)
-p, --package <имя> Имя установленного пакета.
-d, --deprecated Показывать только устаревшие пакеты.
-f, --filter <выражение> Оставляет зависимости, имена которых соответствуют выражению: список имен через запятую или пробел, маска (*, ?) или регулярное выражение.
-x, --exclude <выражение> Исключает зависимости, имена которых соответствуют выражению: список имен через запятую или пробел, маска (*, ?) или регулярное выражение.
-t, --target <тип> Тип целевой версии (по умолчанию: latest):
- latest - последняя доступная версия пакета.
- minor - последняя минорная или патч-версия в пределах основной версии.
- patch - последняя патч-версия в пределах минорной версии.
-o, --output <файл> Экспорт результатов проверки в JSON-файл.
--registry <адрес или имя> Адрес реестра или имя сервера из opm.cfg.
--registry-proxy Адрес HTTP proxy для запросов к реестру.

Примеры использования:

# Проверка в текущем каталоге
depos check

# Проверка конкретного манифеста
depos check --manifest /path/to/packagedef

# Проверка установленного пакета
depos check --package autumn

# Только минорные обновления
depos check --target minor

# Только устаревшие пакеты
depos check --deprecated

# Оставить по именам
depos check -f autumn,oint
depos check -f 'autumn oint'

# Оставить по маске
depos check -f 'autumn-*'

# Оставить по регулярному выражению
depos check -f '/^autumn-.*$/'

# Исключить зависимости из выборки
depos check -x 'autumn-*'

Пример вывода:

Проверка зависимостей: path/to/packagedef

 ↑ 1connector    2.3.1 → 2.3.3
 ↑ autumn        3.3.0 → 4.3.11
 ↑ autumn-cli    1.1.0 → 1.2.0
   semver        1.0.0 → 1.0.0

Найдено обновлений: 3

upgrade

Обновляет версии зависимостей в файле packagedef до указанных целевых версий. После обновления требуется установка новых версий пакетов с помощью opm install.

Caution

Убедитесь, что файл packagedef находится в системе контроля версий, и все изменения зафиксированы. Это действие перезапишет ваш файл.

Синтаксис:

depos upgrade [-m|--manifest <путь>] [--backup]
              [-f|--filter <выражение>] [-x|--exclude <выражение>]
              [-t|--target <тип>] [-o|--output <файл>]
              [--registry <адрес|имя>] [--registry-proxy <URL>]
Опция Описание
-m, --manifest <путь> Путь к файлу packagedef или его каталогу. (по умолчанию: текущая директория)
--backup Создать резервную копию файла packagedef перед изменением.
-f, --filter <выражение> Оставляет зависимости, имена которых соответствуют выражению: список имен через запятую или пробел, маска (*, ?) или регулярное выражение.
-x, --exclude <выражение> Исключает зависимости, имена которых соответствуют выражению: список имен через запятую или пробел, маска (*, ?) или регулярное выражение.
-t, --target <тип> Тип целевой версии (по умолчанию: latest):
- latest - последняя доступная версия пакета.
- minor - последняя минорная или патч-версия в пределах основной версии.
- patch - последняя патч-версия в пределах минорной версии.
-o, --output <файл> Экспорт отчета об обновлениях в JSON-файл.
--registry <адрес или имя> Адрес реестра или имя сервера из opm.cfg.
--registry-proxy Адрес HTTP proxy для запросов к реестру.

Примеры использования:

# Обновление всех пакетов в манифесте
depos upgrade

# С резервной копией
depos upgrade --backup

# Конкретный манифест
depos upgrade --manifest /path/to/project/packagedef

# Только патч-версии
depos upgrade --target patch

# Оставить по именам
depos upgrade -f 'autumn,1connector'

# Оставить по маске
depos upgrade -f 'autumn-*'

# Оставить по регулярному выражению
depos upgrade -f '/^autumn-.*$/'

# Исключить зависимости из обновления
depos upgrade -x 'autumn-*'

Пример вывода:

Обновление зависимостей: path/to/packagedef

 ✓ 1connector    2.3.1 → 2.3.3
 ✓ autumn        3.3.0 → 4.3.11
 ✓ autumn-cli    1.1.0 → 1.2.0
 
Выполните opm install для установки новых версий пакетов.

doctor

Выполняет комплексную диагностику проекта и выявляет проблемы:

  • Отсутствующие в манифесте пакеты, используемые в коде
  • Неиспользуемые пакеты, объявленные в манифесте
  • Неустановленные пакеты
  • Несоответствие версий установленных пакетов
  • Конфликты версий транзитивных зависимостей

Синтаксис:

depos doctor [-m|--manifest <путь>] [-p|--package <имя>]
             [--src-dirs <каталоги>] [--dev-dirs <каталоги>]
             [--checks <проверки>] [-x|--exclude <выражение>]
             [--ignore-dev] [--strict]
Опция Описание
-m, --manifest <путь> Путь к файлу манифеста или его каталогу. (по умолчанию: текущая директория)
-p, --package <имя> Имя установленного пакета.
--src-dirs <каталоги> Каталоги с исходным кодом для анализа (через запятую). (по умолчанию: src)
--dev-dirs <каталоги> Каталоги с вспомогательным кодом для анализа (через запятую). (по умолчанию: tests и tasks)
--checks <проверки> Выполняемые проверки: usage, installed, transitive или их комбинация через запятую. По умолчанию выполняются все проверки.
-x, --exclude <выражение> Исключает зависимости, имена которых соответствуют выражению: список имен через запятую или пробел, маска (*, ?) или регулярное выражение.
--ignore-dev Игнорировать зависимости для разработки при анализе. Всегда Истина при указании опции -p, --package
--strict Завершать выполнение с ненулевым кодом при обнаружении проблем.

Примеры использования:

# Диагностика проекта
depos doctor

# Конкретный манифест
depos doctor --manifest /path/to/project/packagedef

# Диагностика установленного пакета
depos doctor --package autumn

# Кастомные каталоги исходников
depos doctor --src-dirs src,lib,modules

# Кастомные dev-каталоги
depos doctor --dev-dirs tests,tasks,benchmark

# Без dev-зависимостей
depos doctor --ignore-dev

# Только использование и установленные пакеты
depos doctor --checks usage,installed

# Исключить зависимости из анализа
depos doctor -x 'autumn-*'

# Строгий режим (ненулевой код возврата при проблемах)
depos doctor --strict

Пример вывода:

Диагностика зависимостей: path/to/packagedef

Найдено проблем: 10
  2 отсутствуют в манифесте
  2 не используются
  1 не установлен
  2 конфликта версий
  3 конфликта транзитивных зависимостей

[1] Отсутствуют в манифесте

   jason
     ├─ path/to/src/МойКласс1.os
     └─ path/to/src/МойКласс2.os
   asserts (dev)
     └─ path/to/tests/Тесты.os

[2] Объявлены, но не используются

   cli
   1bdd (dev)

[3] Не установлены

  1connector

[4] Несоответствие версий

   autumn
     установлена: 3.3.0
     требуется:   >=4.3.0
     путь:        path/to/lib/autumn

   asserts (dev)
     установлена: 1.5.0
     требуется:   >=1.6.0
     путь:        path/to/additional_lib/asserts

[5] Конфликты транзитивных зависимостей

   configor
     причина:     установленная версия не соответствует требованию
     установлена: 0.9.0
     требуется:   >=0.9.1
     источник:    autumn
     цепочка:     autumn -> configor

   collectionos
     причина:     несовместимые требования
     установлена: 0.7.2
     требуется:   >=0.8.2; <=0.6.0
     источники:   package1, package2
     цепочки:
       ├─ package1 -> collectionos
       └─ package2 -> collectionos

   missing
     причина:     транзитивная зависимость не установлена
     требуется:   >=0.6.1
     источник:    autumn
     цепочка:     autumn -> fluent

Обнаружены проблемы с зависимостями.

Настройки

Команды check и upgrade используют opm.cfg, если он есть: из него берутся серверы пакетов и настройки proxy. Файл нужен для работы с настроенными в OPM реестрами, но создавать его специально для depos не требуется. Если opm.cfg отсутствует и реестр не задан другим способом, depos сначала обращается к основному реестру, затем к резервному. Их адреса можно изменить настройками ниже.

Выбор реестра

Опция --registry задаёт конкретный адрес реестра или имя сервера из opm.cfg. Без этой опции depos использует серверы из opm.cfg в порядке записи. Переменная OPM_HUB_MIRROR оставляет из них только сервер с указанным именем. Если подходящих серверов нет, используются основной и резервный реестры depos.

opm.cfg ищется в порядке OPM: в текущем каталоге, профиле пользователя, системном каталоге и рядом со стартовым сценарием. Читается первый найденный файл. Приоритет источников proxy: --registry-proxy, затем depos.registry.proxy (DEPOS_REGISTRY_PROXY), затем opm.cfg.

Пулы OpenHub

Если в opm.cfg задан путь /api/v1/pools/<пул>/download, depos берёт из него имя пула и сразу использует API OpenHub.

Если пул не указан, для OpenHub используется пул по умолчанию. Если он указан у последнего проверяемого сервера, после неудачных попыток depos проверяет на этом сервере пул по умолчанию. Уже проверенный пул того же реестра повторно не запрашивается.

Настройки depos

Значения задаются в autumn-properties.json или соответствующими переменными среды.

Настройка Переменная среды По умолчанию Описание
depos.registry.primary DEPOS_REGISTRY_PRIMARY https://hub.oscript.io Основной реестр.
depos.registry.fallback DEPOS_REGISTRY_FALLBACK http://hub.oscript.ru Резервный реестр.
depos.registry.proxy DEPOS_REGISTRY_PROXY "" Прокси для запросов к реестру.
depos.registry.default-pool DEPOS_REGISTRY_DEFAULT_POOL default Пул OpenHub по умолчанию.

GitHub Action

Автоматизация обновления зависимостей с созданием Pull Request:

name: Обновление зависимостей

on:
  schedule:
    - cron: '0 0 * * 1' # Каждый понедельник
  workflow_dispatch:

jobs:
  update-dependencies:
    # if: github.repository_owner == '<your-username>'
    runs-on: ubuntu-latest
    steps:
      - name: Обновление зависимостей
        uses: Stivo182/depos-action@v2
        with:
          filter: autumn-* # Обновлять только пакеты autumn
          target: minor    # До минорных версий
          message-prefix: build(deps)
          token: ${{ secrets.PAT }}

Подробная документация: depos-action.

About

Инструмент для анализа и обновления версий зависимостей в манифесте пакета OneScript

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages