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 +8 -0
- package/README.md +15 -0
- package/index.js +2 -1
- package/package.json +1 -1
- package/src/changelog.js +40 -0
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("
|
|
14
|
+
.version(pkgVersion, "-v, --version");
|
|
14
15
|
|
|
15
16
|
// Release commands
|
|
16
17
|
const releaseCmd = program
|
package/package.json
CHANGED
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
|
|