spectrum-cli
v1.2.2
Published
🚀 Modern CLI for development workflow automation - release management, versioning, and changelog generation
Maintainers
Readme
🚀 Spectrum CLI
Современный CLI для workflow разработки - переписанный с shell-скриптов на Node.js
📦 Установка
🌟 NPM (рекомендуется)
# Установить глобально
npm install -g spectrum-cli
# Использовать
spectrum --help🔧 Из исходников
# Клонировать и установить
git clone https://github.com/dnwsilver/spectrum-cli.git
cd spectrum-cli
npm install
./index.js --help📋 Подробные инструкции: INSTALL.md
🚀 Использование
Основные команды:
# Показать справку
spectrum --help
# Показать текущую версию CLI
spectrum -v | --version
# 📦 Управление версиями
spectrum version up major # Поднять major версию (1.0.0 → 2.0.0)
spectrum version up minor # Поднять minor версию (1.0.0 → 1.1.0)
spectrum version up patch # Поднять patch версию (1.0.0 → 1.0.1)
# 🚀 Управление релизами
spectrum release start # Полный цикл релиза
spectrum release close # Закрыть релиз и смержить в dev
spectrum release deploy # Деплой релиза (создать тег)
# 📈 Теги chart
spectrum chart create 1.2.3 # Создать и запушить chart-$name-$version
spectrum chart deploy # Обновить helmrelease.yaml до последнего chart-тега и запушить
spectrum chart verify ~/repo # Сравнить ingress paths AS IS vs TO BE для Next.js исходников
# 📝 Управление changelog
spectrum changelog append "Сообщение" # Добавить запись в CHANGELOG.mdСправка по командам:
# Справка по релизам
spectrum release --help
# Справка по версиям
spectrum version up --help
# Справка по changelog
spectrum changelog --help
# Справка по chart
spectrum chart --help✨ Особенности
- 🎯 Минималистичный интерфейс - только необходимые команды
- 🎨 Цветной вывод с эмодзи для лучшего UX
- 🔄 Автоматическое определение пакетного менеджера (npm/yarn/bun)
- 📊 Детальная обратная связь по каждой операции
- 🛡️ Обработка ошибок и fallback'ы
- 🚀 Полная совместимость с Git workflow
🔧 Требования
- Node.js >= 20
- Git
🏗️ Архитектура
spectrum-cli/
├── index.js # 🚀 Главный CLI интерфейс
├── src/ # 📁 Исходный код
│ ├── utils.js # 🛠️ Утилиты и логирование
│ ├── git.js # 📝 Git операции
│ ├── version.js # 📦 Управление версиями SemVer
│ ├── changelog.js # 📋 Работа с CHANGELOG.md
│ ├── chart.js # 📈 Создание и push chart тегов
│ ├── development.js # ⚡ Dev команды (внутренние)
│ └── release.js # 🚀 Release процесс
├── package.json # 📦 Конфигурация проекта
├── install.sh # 🔧 Автоматический установщик
├── INSTALL.md # 📋 Инструкции по установке
└── README.md # 📖 ДокументацияКоманды
| Команда | Описание |
| --------------------------- | ----------------------------------- |
| spectrum release start | Запустить полный цикл релиза |
| spectrum release deploy | Деплой релиза |
| spectrum release close | Закрыть релиз |
| spectrum version up major | Увеличить major версию |
| spectrum version up minor | Увеличить minor версию |
| spectrum version up patch | Увеличить patch версию |
| spectrum changelog append | Добавить запись в changelog |
| spectrum chart create | Создать и запушить chart тег |
| spectrum chart deploy | Обновить chart версию в helmrelease |
| spectrum chart verify | Проверить ingress paths chart |
🛡️ Preflight-проверки по командам
spectrum release start:git-repo(внутри git-репозитория),clean-working-tree(нет незакоммиченных изменений),main-and-dev-branches(естьorigin/mainиorigin/develop),package-version(версия вpackage.jsonсуществует и валидный semver),changelog-exists(естьCHANGELOG.md),changelog-prettier-check(prettier --check CHANGELOG.md).spectrum release close:git-repo,clean-working-tree,main-and-dev-branches.spectrum release deploy:git-repo,clean-working-tree,on-main-branch(текущая веткаmain),package-version,tag-missing(тегаv<version>нет локально и наorigin).spectrum version up major:package-json-exists(естьpackage.json),package-version,clean-working-tree.spectrum version up minor:package-json-exists,package-version,clean-working-tree.spectrum version up patch:package-json-exists,package-version,clean-working-tree.spectrum changelog append <message>:changelog-exists,prettier-available(доступенprettierилиnpx --yes prettier),changelog-prettier-check.spectrum chart create <version>:git-repo,clean-working-tree,on-main-branch,valid-semver(переданный<version>— semver),single-chart(ровно одинcharts/<chart-name>/Chart.yaml),tag-missing(тегаchart-<name>-<version>нет локально и наorigin).spectrum chart deploy:git-repo,clean-working-tree,on-main-branch(текущая веткаmain),remote-origin(настроенorigin),remote-reachable(доступенorigin),single-chart,helmrelease-files(найденыhelmrelease.yaml).spectrum chart verify <source_path>:git-repo,single-values-yaml(ровно одинcharts/**/values.yaml),values-ingress-sections(естьingress.paths.api/pages/assets),source-path-directory,next-project,build-command-support.
🔄 Workflow релиза
spectrum release start
- Переключается на dev ветку
- Создает release/X.Y.Z ветку
- Обновляет заголовок в CHANGELOG.md
- Удаляет пустые секции из changelog
- Добавляет новый блок Unreleased
- Коммитит изменения
- Пушит release ветку
- Выводит прямую ссылку на создание Merge Request
spectrum release close
- Переключается на main ветку
- Обновляет main ветку
- Переключается на dev ветку
- Мержит main в dev
- Пушит dev ветку
spectrum release deploy
- Переключается на main ветку
- Создает тег с текущей версией
- Пушит тег в remote
spectrum chart create <version>
- Ищет
Chart.yamlвcharts/<chart-name>/Chart.yamlи читает полеname - Проверяет, что текущая ветка —
main - Проверяет semver для переданной версии
- Собирает тег
chart-<name>-<version> - Проверяет, что такого тега еще нет
- Создает тег и пушит его в
origin
spectrum chart deploy
- Находит последний тег чарта на remote
originв форматеchart-<app>-<version> - Ищет все
helmrelease.yamlв репозитории - Обновляет
spec.chart.spec.versionдо найденной версии и печатает список файлов (зеленымобновленные,серымбез изменений) - Если обновлений нет, завершает выполнение сообщением, что все уже на последней версии
- Запрашивает подтверждение публикации через Enter
- Делает
git addобновленных файлов, создает коммит🚀 Deploy service.и пушит изменения
spectrum chart verify <source_path>
- Находит
charts/**/values.yamlи читаетingress.paths.api/pages/assetsкак AS IS - Собирает TO BE для Next.js из
.nextартефактов, при необходимости запускает build, затем делает fallback на файловую структуру роутов - Для
assetsиспользует фиксированный набор regex-путей - Печатает diff только по изменениям: лишние пути (
-) и недостающие (+) с цветовой подсветкой - Завершает команду с ошибкой, если есть расхождения
📝 Работа с Changelog
spectrum changelog append "Сообщение"
Умная команда для добавления записей в CHANGELOG.md с автоматическим определением контекста:
✨ Основные возможности:
- 🔍 Автоматическое извлечение номера задачи из названия ветки
- 🤔 Интерактивный запрос номера задачи если не найден
- 👤 Проверка Git config с подсказками по настройке
- 🎯 Умное определение раздела по типу ветки
- 🎨 Контекстный вывод с цветовым выделением
- 🧹 Автоматическая очистка дефолтного текста
- ✅ Проверка Prettier перед изменениями
CHANGELOG.md(команда остановится при ошибке)
📋 Поддерживаемые типы веток:
feature/→ выбор между Added, Changed, Deprecated, Removedbugfix/,fix/→ автоматически Fixedsupport/→ выбор между Support, Security- другие → показ всех разделов
📌 Пример использования:
# На ветке feature/ABC-123-new-component
spectrum changelog append "Добавлен новый компонент кнопки"
# Результат в CHANGELOG.md:
# - ABC-123 Добавлен новый компонент кнопки. [Ваше Имя](ваш@email.com)🔍 Линтинг CHANGELOG с Prettier
- Перед любыми изменениями changelog выполняется проверка наличия
prettierи командаprettier --check CHANGELOG.md. - Если
prettierнедоступен или проверка не пройдена, выполнение прекращается с ошибкой. - Запуск через
npxподдерживается автоматически: используетсяnpx --yes prettierпри наличии.
Совет: Приведите файл к нужному формату командой:
npx --yes prettier --write CHANGELOG.md
🎯 Философия
- Простота - минимум команд, максимум функциональности
- Безопасность - все операции с обработкой ошибок
- Скорость - быстрые операции без лишних зависимостей
- Читаемость - понятные логи и сообщения
📚 Дополнительная документация
🤝 Участие в разработке
# Форк репозитория
git clone https://github.com/dnwSilver/spectrum-cli.git
cd spectrum-cli
# Установка dev зависимостей
npm install
# Тестирование
./index.js --help📄 Лицензия
MIT License - см. LICENSE
Создано для автоматизации повседневных задач разработки 🛠️
