Skip to content

Latest commit

 

History

History
327 lines (245 loc) · 13.7 KB

File metadata and controls

327 lines (245 loc) · 13.7 KB

depos

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

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

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

Important

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

Оглавление

Установка

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

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

# Проверка в текущем каталоге
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 <файл>]
Опция Описание
-m, --manifest <путь> Путь к файлу packagedef или его каталогу. (по умолчанию: текущая директория)
--backup Создать резервную копию файла packagedef перед изменением.
-f, --filter <фильтр> Фильтр пакетов по именам (через запятую или пробел), шаблону (*, ?) или регулярному выражению.
-x, --exclude <фильтр> Исключить пакеты по именам (через запятую или пробел), шаблону (*, ?) или регулярному выражению.
-t, --target <тип> Тип целевой версии (по умолчанию: latest):
- latest - последняя доступная версия пакета.
- minor - последняя минорная или патч-версия в пределах основной версии.
- patch - последняя патч-версия в пределах минорной версии.
-o, --output <файл> Экспорт отчета об обновлениях в JSON-файл.

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

# Обновление всех пакетов в манифесте
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 <каталоги>]
             [-x|--exclude <фильтр>] [--ignore-dev] [--strict]
Опция Описание
-m, --manifest <путь> Путь к файлу манифеста или его каталогу. (по умолчанию: текущая директория)
-p, --package <имя> Имя установленного пакета.
--src-dirs <каталоги> Каталоги с исходным кодом для анализа (через запятую). (по умолчанию: src)
--dev-dirs <каталоги> Каталоги с вспомогательным кодом для анализа (через запятую). (по умолчанию: tests и tasks)
-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 -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

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

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@v1
        with:
          filter: autumn-* # Обновлять только пакеты autumn
          target: minor    # До минорных версий
          message-prefix: build(deps)
          token: ${{ secrets.PAT }}

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