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Проверяет наличие обновлений для зависимостей без изменения манифеста. Выводит список пакетов с указанием текущих и доступных версий.
Синтаксис:
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Обновляет версии зависимостей в файле 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 для установки новых версий пакетов.Выполняет комплексную диагностику проекта и выявляет проблемы:
- Отсутствующие в манифесте пакеты, используемые в коде
- Неиспользуемые пакеты, объявленные в манифесте
- Неустановленные пакеты
- Несоответствие версий установленных пакетов
- Конфликты версий транзитивных зависимостей
Синтаксис:
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
Обнаружены проблемы с зависимостями.Автоматизация обновления зависимостей с созданием 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.