gomodup

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: MIT Imports: 11 Imported by: 0

README

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/[email protected]
go get github.com/stretchr/[email protected]

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

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

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

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

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

📄 Лицензия

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


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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL