Skip to content

AdamBrianBright/gomodup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gomodup ✨: Ваш помощник по обновлению Go-модулей

gomodup — это CLI инструмент на Go, который помогает поддерживать ваши зависимости Go в актуальном состоянии. Он сканирует ваш файл go.mod, находит устаревшие пакеты, а затем интеллектуально определяет самые свежие совместимые версии с вашей текущей версией Go, чтобы избежать проблем с совместимостью.

🚀 Описание

В мире Go, где зависимости развиваются быстро, иногда бывает сложно понять, на какую версию можно безопасно обновиться, не сломав сборку или не потребовав обновления вашей версии Go. gomodup решает эту проблему, делая следующее:

  1. Читает go.mod: Идентифицирует все прямые зависимости.
  2. Проверяет актуальность: Обращается к прокси Go-модулей (proxy.golang.org) для получения всех доступных версий каждого модуля.
  3. Проверяет совместимость с Go: Для каждой новой версии модуля скачивает её go.mod и проверяет, какая версия Go требуется для этого модуля.
  4. Фильтрация по версии Go: Если новая версия модуля требует Go выше вашей текущей (например, у вас Go 1.23, а модуль требует 1.24), gomodup остановится и предложит самую последнюю версию, совместимую с вашей версией Go.
  5. Игнорирование приватных модулей: Уважает переменную окружения GOPRIVATE, пропуская модули, к которым нет публичного доступа.
  6. Параллельная обработка с Rate Limiting: Использует горутины для быстрой проверки множества модулей, но с настраиваемыми задержками для предотвращения перегрузки реестра пакетов.
  7. Удобный вывод: Представляет список найденных совместимых версий в виде таблицы и генерирует команды go get для простого обновления.

Больше никаких ручных проверок и головной боли! Просто запустите gomodup и получите список готовых команд. (づ。◕‿‿◕。)づ

🛠️ Установка

Для установки gomodup, убедитесь, что у вас установлен Go 1.25+ и выполните команду:

go install github.com/AdamBrianBright/gomodup@latest

После этого исполняемый файл gomodup будет доступен в вашем $GOPATH/bin.

📖 Использование

Перейдите в корневую директорию вашего проекта Go, где находится go.mod, и запустите:

Базовое использование

gomodup

С подробным выводом (режим отладки)

gomodup -v

Указание другой директории

Если ваш файл go.mod находится не в текущей директории:

gomodup -dir /path/to/your/go/project

⚙️ Конфигурация

gomodup поддерживает конфигурацию через переменные окружения, что позволяет точно настроить его поведение:

Переменная окружения Описание Значение по умолчанию
REQUEST_TIMEOUT Таймаут для каждого отдельного HTTP-запроса к прокси Go-модулей (например, 10s, 1m). 30s
GLOBAL_TIMEOUT Общий таймаут для выполнения всей программы. Если превышен, программа завершится (например, 5m, 30m). 5m
MAX_CONCURRENCY Максимальное количество одновременных горутин для проверки модулей. Контролирует параллелизм. 5
RATE_LIMIT Задержка между запросами к прокси Go-модулей. Помогает избежать блокировки и "DDoS-атаки" на сервис (например, 100ms, 1s). 100ms
SKIP_INDIRECT Если установлено в true, косвенные зависимости будут пропущены. Если false, они также будут проверены на обновления. true
GOPRIVATE Список приватных репозиториев, разделенных запятыми, которые не должны проверяться. Соответствует поведению go get. Использует глоб-паттерны (например, *.corp.com, github.com/myorg/*). (пусто)

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

REQUEST_TIMEOUT=60s MAX_CONCURRENCY=10 RATE_LIMIT=50ms GOPRIVATE="git.mycompany.com/*,github.com/myuser/private-repo" gomodup -v

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

Найденные совместимые версии:

| Модуль                     | Совместимые версии                    |
|----------------------------|----------------------------------------|
| github.com/gin-gonic/gin   | v1.9.2, v1.9.3, v1.10.0              |
| github.com/stretchr/testify| v1.8.5, v1.9.0                       |

Предлагаемые обновления:
go get github.com/gin-gonic/gin@v1.10.0
go get github.com/stretchr/testify@v1.9.0

Если обновлений не найдено:

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

📦 Структура Проекта

Проект организован по пакетам для лучшей читаемости и поддерживаемости:

gomodup/
├── main.go               # Точка входа в приложение
├── config/               # Загрузка и управление конфигурацией
├── version/              # Парсинг и сравнение семантических версий
├── module/               # Логика обработки Go-модулей и зависимостей
├── fetcher/              # HTTP-клиент с Rate Limiting для получения данных
├── parser/               # Парсинг файла go.mod
└── table/                # Форматирование и вывод таблиц

📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробнее смотрите файл LICENSE.


Сделано с ❤️ на Go.

About

Совместимые обновления зависимостей go.mod

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages