Как стать автором
Поиск
Написать публикацию
Обновить

Осознанное обновление go.mod, присыпанное визуальным сахаром или как я написал yet another cli tool

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров738

Поддерживать зависимости в тонусе — задача неблагодарная:

  • Обновление «всего и сразу» через go get -u ./... нередко превращается в «собери‑ка это теперь».

  • Непонятно, где есть patch/minor/major, а что лучше подождать.

  • Ручной цикл бесит: проверил список → выбрал пакет → обновил → вернулся в список → повтори.

В какой-то момент я понял, что хочу обновлять зависимости спокойно и намеренно, а не играть в «русскую рулетку» с билдом.

Убивая двух зайцев сразу, я взял и написал modup — утилита которая сканирует ваши Go‑модули и помогает обновлять только те зависимости, которые вы действительно хотите (первый заяц). Построен на Bubble Tea, красивая и интересная tui либа, которую давно хотел освоить (второй заяц): работает быстро, приятно выглядит и не заставляет вас танцевать с бубном вокруг флагов.

  • Показывает, где доступны обновления.

  • Позволяет выбрать конкретные модули для апдейта.

  • Обновляет по одному, с ясным визуальным прогрессом.

Пример работы на репе golangci-lint
Пример работы на репе golangci-lint

Маленькая шутка, но по делу: вместо «стрельбы из go get -u ./... по воробьям» — точечные попадания туда, где это нужно.

Зачем ВАМ нужен это modup, когда есть альтенативы?

  • Удобство: фокус на осознанные апдейты — только то, что правда нужно.

  • Кроссплатформенность: готовые бинарники для macOS/Linux/Windows, обычный терминал.

  • One‑line install: brew install, go install или готовые curl на установку из релизов.

  • Внятный TUI: никакой жонглёрки командами и чеклистами — всё на одном экране.

Аналогов хватает (ниже), но modup делает упор на дружелюбный интерфейс и процесс без сюрпризов. Как говорится, «никакой магии» — только понятные шаги.

Когда это особенно выручает?

  • Не хотите «дробовиком» обновлять все зависимости сразу.

  • Перед релизом: подтянуть patch/minor, а major оставить на потом.

  • В монорепо: обновить только критичные пакеты и посмотреть, что (если что) развалится.

  • Еженедельная «гигиена зависимостей» за 2–3 минуты.

Идеи для развития (help wanted)

  • Более «go‑style» тема (сейчас дефолтные цвета).

  • Приоритизация списка: сначала security/major, затем minor/patch, с цветовой индикацией.

  • Интеграция с govulncheck: подсвечивать уязвимые версии и предлагать обновить в первую очередь.

  • Опция «после каждого апдейта прогнать go build» — чтобы сразу подтвердить, что всё ок.

  • Быстрые ссылки на CHANGELOG/compare на pkg.go.dev/GitHub для выбранного модуля.

Если что‑то из этого вам важно — напишите, помогите приоритезировать. Ваши кейсы = мой roadmap.

Аналоги (и источники вдохновения)

Поставьте, прогоните на своём репо и поделитесь впечатлениями. Какие сценарии вам важны? Что добавить или поменять в UI и приоритизации? Идеи и критика приветствуются — чем честнее, тем лучше.

Репозиторий: https://github.com/chaindead/modup

Теги:
Хабы:
+6
Комментарии0

Публикации

Ближайшие события