spectrum-cli 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -35,6 +35,14 @@ _Список правок для обеспечения безопасност
35
35
 
36
36
  _Список правок для обеспечения технической поддержки._
37
37
 
38
+ ## 🚀 [1.1.1] - 2025-10-03
39
+
40
+ ### 🛠 Changed
41
+
42
+ - Исправлено поведения команды `version`, добавлены флаги `-v`/`--version`
43
+ - Добавлен этап проверки `CHANGELOG.md` через Prettier перед любыми изменениями
44
+ - Команды, изменяющие changelog, останавливаются при отсутствии `prettier` или ошибке `--check`
45
+
38
46
  ## 🚀 [1.1.0] - 2025-09-30
39
47
 
40
48
  ### 🆕 Added
package/README.md CHANGED
@@ -33,6 +33,8 @@ npm install
33
33
  ```bash
34
34
  # Показать справку
35
35
  spectrum --help
36
+ # Показать текущую версию CLI
37
+ spectrum -v | --version
36
38
 
37
39
  # 📦 Управление версиями
38
40
  spectrum version up major # Поднять major версию (1.0.0 → 2.0.0)
@@ -144,6 +146,7 @@ spectrum-cli/
144
146
  - 🎯 **Умное определение раздела** по типу ветки
145
147
  - 🎨 **Контекстный вывод** с цветовым выделением
146
148
  - 🧹 **Автоматическая очистка** дефолтного текста
149
+ - ✅ **Проверка Prettier** перед изменениями `CHANGELOG.md` (команда остановится при ошибке)
147
150
 
148
151
  **📋 Поддерживаемые типы веток:**
149
152
  - `feature/` → выбор между Added, Changed, Deprecated, Removed
@@ -160,6 +163,18 @@ spectrum changelog append "Добавлен новый компонент кно
160
163
  # - ABC-123 Добавлен новый компонент кнопки. [Ваше Имя](ваш@email.com)
161
164
  ```
162
165
 
166
+ ### 🔍 Линтинг CHANGELOG с Prettier
167
+
168
+ - Перед любыми изменениями changelog выполняется проверка наличия `prettier` и команда `prettier --check CHANGELOG.md`.
169
+ - Если `prettier` недоступен или проверка не пройдена, выполнение прекращается с ошибкой.
170
+ - Запуск через `npx` поддерживается автоматически: используется `npx --yes prettier` при наличии.
171
+
172
+ > Совет: Приведите файл к нужному формату командой:
173
+ >
174
+ > ```bash
175
+ > npx --yes prettier --write CHANGELOG.md
176
+ > ```
177
+
163
178
  ## 🎯 Философия
164
179
 
165
180
  - **Простота** - минимум команд, максимум функциональности
package/index.js CHANGED
@@ -6,11 +6,12 @@ const git = require("./src/git");
6
6
  const version = require("./src/version");
7
7
  const release = require("./src/release");
8
8
  const changelog = require("./src/changelog");
9
+ const { version: pkgVersion } = require("./package.json");
9
10
 
10
11
  program
11
12
  .name("spectrum")
12
13
  .description("🚀 Spectrum CLI for development workflow")
13
- .version("1.0.7");
14
+ .version(pkgVersion, "-v, --version");
14
15
 
15
16
  // Release commands
16
17
  const releaseCmd = program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spectrum-cli",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "🚀 Modern CLI for development workflow automation - release management, versioning, and changelog generation",
5
5
  "main": "index.js",
6
6
  "bin": {
package/src/changelog.js CHANGED
@@ -4,8 +4,39 @@ const path = require('path');
4
4
  const readline = require('readline');
5
5
  const { logSuccess, logError, execCommand, execSilent, getVersion, getCurrentBranch, colors } = require('./utils');
6
6
 
7
+ function getPrettierRunner() {
8
+ const npxVersion = execSilent('npx --yes prettier --version');
9
+ if (npxVersion) return 'npx --yes prettier';
10
+ const directVersion = execSilent('prettier --version');
11
+ if (directVersion) return 'prettier';
12
+ return null;
13
+ }
14
+
15
+ function ensurePrettierAvailable() {
16
+ const runner = getPrettierRunner();
17
+ if (!runner) {
18
+ logError('❌', 'Prettier is not available. Install it or use npx.');
19
+ return null;
20
+ }
21
+ return runner;
22
+ }
23
+
24
+ function checkChangelogWithPrettier() {
25
+ const runner = ensurePrettierAvailable();
26
+ if (!runner) return false;
27
+ const ok = execCommand(`${runner} --check CHANGELOG.md`, null, null);
28
+ if (!ok) {
29
+ logError('❌', 'CHANGELOG.md failed Prettier check. Fix formatting before proceeding.');
30
+ return false;
31
+ }
32
+ return true;
33
+ }
34
+
7
35
  function changelogChangeHeader() {
8
36
  try {
37
+ if (!checkChangelogWithPrettier()) {
38
+ return false;
39
+ }
9
40
  const currentVersion = getVersion();
10
41
  if (!currentVersion) {
11
42
  return false;
@@ -27,6 +58,9 @@ function changelogChangeHeader() {
27
58
 
28
59
  function changelogRemoveEmptyChapters() {
29
60
  try {
61
+ if (!checkChangelogWithPrettier()) {
62
+ return false;
63
+ }
30
64
  const data = fs.readFileSync('CHANGELOG.md', 'utf8');
31
65
  const updatedData = data.replaceAll(/###.*\n\n_.*_\n\n/gm, '');
32
66
  fs.writeFileSync('CHANGELOG.md', updatedData);
@@ -40,6 +74,9 @@ function changelogRemoveEmptyChapters() {
40
74
 
41
75
  function changelogAddUnreleasedBlock() {
42
76
  try {
77
+ if (!checkChangelogWithPrettier()) {
78
+ return false;
79
+ }
43
80
  const currentVersion = getVersion();
44
81
  if (!currentVersion) {
45
82
  return false;
@@ -220,6 +257,9 @@ function displayContext(lines, insertIndex, entry) {
220
257
 
221
258
  async function changelogAppend(message) {
222
259
  try {
260
+ if (!checkChangelogWithPrettier()) {
261
+ return false;
262
+ }
223
263
  const task = await extractTaskFromBranch();
224
264
  if (!task) return false;
225
265