onreza-release 1.0.0
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/README.md +881 -0
- package/dist/binaries.d.ts +74 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +9073 -0
- package/dist/cli.js.map +73 -0
- package/dist/config.d.ts +58 -0
- package/dist/gitverse.d.ts +91 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +8545 -0
- package/dist/index.js.map +71 -0
- package/dist/types.d.ts +862 -0
- package/dist/utils/binary-archive-extractor.d.ts +19 -0
- package/dist/utils/binary-package-generator.d.ts +24 -0
- package/dist/utils/binary-platforms.d.ts +113 -0
- package/dist/utils/binary-publisher.d.ts +53 -0
- package/dist/utils/binary-wrapper-generator.d.ts +34 -0
- package/dist/utils/changelog.d.ts +14 -0
- package/dist/utils/commitlint-generator.d.ts +5 -0
- package/dist/utils/git.d.ts +101 -0
- package/dist/utils/parser.d.ts +36 -0
- package/dist/utils/retry.d.ts +39 -0
- package/dist/utils/version.d.ts +18 -0
- package/package.json +66 -0
- package/schema.json +461 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,862 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Конфигурация для gitverse-release
|
|
3
|
+
*/
|
|
4
|
+
export interface ReleaseConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Настройки для monorepo
|
|
7
|
+
*/
|
|
8
|
+
monorepo?: MonorepoConfig;
|
|
9
|
+
/**
|
|
10
|
+
* Настройки генерации CHANGELOG
|
|
11
|
+
*/
|
|
12
|
+
changelog?: ChangelogConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Настройки Git операций
|
|
15
|
+
*/
|
|
16
|
+
git?: GitConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Настройки версионирования
|
|
19
|
+
*/
|
|
20
|
+
versioning?: VersioningConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Настройки GitVerse Release
|
|
23
|
+
*/
|
|
24
|
+
gitverse?: GitVerseConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Настройки retry механизма
|
|
27
|
+
*/
|
|
28
|
+
retry?: RetryConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Настройки генерации commitlint конфига
|
|
31
|
+
*/
|
|
32
|
+
commitlint?: CommitlintGeneratorConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Настройки бинарной дистрибуции
|
|
35
|
+
*/
|
|
36
|
+
binaries?: BinariesConfig;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Конфигурация monorepo
|
|
40
|
+
*/
|
|
41
|
+
export interface MonorepoConfig {
|
|
42
|
+
/**
|
|
43
|
+
* Включен ли режим monorepo
|
|
44
|
+
*/
|
|
45
|
+
enabled: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Список пакетов в monorepo
|
|
48
|
+
*/
|
|
49
|
+
packages: PackageConfig[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Конфигурация отдельного пакета в monorepo
|
|
53
|
+
*/
|
|
54
|
+
export interface PackageConfig {
|
|
55
|
+
/**
|
|
56
|
+
* Короткое имя пакета (для CLI)
|
|
57
|
+
*/
|
|
58
|
+
name: string;
|
|
59
|
+
/**
|
|
60
|
+
* Путь к директории пакета
|
|
61
|
+
*/
|
|
62
|
+
path: string;
|
|
63
|
+
/**
|
|
64
|
+
* Название пакета в package.json
|
|
65
|
+
*/
|
|
66
|
+
packageName: string;
|
|
67
|
+
/**
|
|
68
|
+
* Префикс для git тега (например: "sdk-v")
|
|
69
|
+
*/
|
|
70
|
+
tagPrefix: string;
|
|
71
|
+
/**
|
|
72
|
+
* Путь к CHANGELOG файлу
|
|
73
|
+
*/
|
|
74
|
+
changelog: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Конфигурация CHANGELOG
|
|
78
|
+
*/
|
|
79
|
+
export interface ChangelogConfig {
|
|
80
|
+
/**
|
|
81
|
+
* Mapping типов коммитов на заголовки секций
|
|
82
|
+
*/
|
|
83
|
+
types: Record<string, string>;
|
|
84
|
+
/**
|
|
85
|
+
* Показывать ли автора коммита
|
|
86
|
+
*/
|
|
87
|
+
showAuthor: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Показывать ли хеш коммита
|
|
90
|
+
*/
|
|
91
|
+
showHash: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Конфигурация Git операций
|
|
95
|
+
*/
|
|
96
|
+
export interface GitConfig {
|
|
97
|
+
/**
|
|
98
|
+
* Команда для выполнения перед коммитом (например: "bun run format")
|
|
99
|
+
*/
|
|
100
|
+
beforeCommit?: string;
|
|
101
|
+
/**
|
|
102
|
+
* Создавать ли коммит с изменениями
|
|
103
|
+
*/
|
|
104
|
+
commitChanges: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Шаблон сообщения коммита (поддерживает {{package}} и {{version}})
|
|
107
|
+
*/
|
|
108
|
+
commitMessage: string;
|
|
109
|
+
/**
|
|
110
|
+
* Шаблон сообщения для тега (поддерживает {{package}} и {{version}})
|
|
111
|
+
*/
|
|
112
|
+
tagMessage: string;
|
|
113
|
+
/**
|
|
114
|
+
* Пушить ли изменения в remote
|
|
115
|
+
*/
|
|
116
|
+
push: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Использовать GVR_TOKEN для git push через HTTPS.
|
|
119
|
+
* Полезно для CI/CD когда нужно пушить в protected branches.
|
|
120
|
+
* Токен должен иметь права на запись в репозиторий.
|
|
121
|
+
* @default false
|
|
122
|
+
*/
|
|
123
|
+
useTokenForPush?: boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Конфигурация версионирования
|
|
127
|
+
*/
|
|
128
|
+
export interface VersioningConfig {
|
|
129
|
+
/**
|
|
130
|
+
* Разрешены ли prerelease версии
|
|
131
|
+
*/
|
|
132
|
+
allowPrerelease: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Префикс для prerelease версий (beta, alpha, rc)
|
|
135
|
+
*/
|
|
136
|
+
prereleasePrefix: string;
|
|
137
|
+
/**
|
|
138
|
+
* Префикс для git тега (например: "v", "sdk-v", "release-v")
|
|
139
|
+
*/
|
|
140
|
+
tagPrefix: string;
|
|
141
|
+
/**
|
|
142
|
+
* Pre-major режим для BREAKING CHANGES
|
|
143
|
+
*
|
|
144
|
+
* Контролирует поведение BREAKING CHANGE в коммитах:
|
|
145
|
+
* - "auto" (default): версии < 1.0.0 → minor bump, >= 1.0.0 → major bump
|
|
146
|
+
* - "enabled": всегда minor bump (полезно для experimental проектов)
|
|
147
|
+
* - "disabled": всегда major bump (стандартный semver)
|
|
148
|
+
* - "<version>": minor bump пока версия < указанной (например "2.0.0")
|
|
149
|
+
*
|
|
150
|
+
* @default "auto"
|
|
151
|
+
* @example
|
|
152
|
+
* "auto" // 0.5.0 + BREAKING → 0.6.0, затем 1.0.0 + BREAKING → 2.0.0
|
|
153
|
+
* "enabled" // 1.5.0 + BREAKING → 1.6.0 (всегда minor)
|
|
154
|
+
* "2.0.0" // 1.5.0 + BREAKING → 1.6.0, затем 2.0.0 + BREAKING → 3.0.0
|
|
155
|
+
*/
|
|
156
|
+
preMajorMode?: string;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* CLI опции
|
|
160
|
+
*/
|
|
161
|
+
export interface CliOptions {
|
|
162
|
+
/**
|
|
163
|
+
* Тестовый прогон (не создавать коммиты/теги/релизы)
|
|
164
|
+
*/
|
|
165
|
+
dryRun?: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Путь к конфиг файлу
|
|
168
|
+
*/
|
|
169
|
+
config?: string;
|
|
170
|
+
/**
|
|
171
|
+
* Имя пакета для релиза (для monorepo)
|
|
172
|
+
*/
|
|
173
|
+
package?: string;
|
|
174
|
+
/**
|
|
175
|
+
* Принудительная версия
|
|
176
|
+
*/
|
|
177
|
+
version?: string;
|
|
178
|
+
/**
|
|
179
|
+
* Создать prerelease версию
|
|
180
|
+
*/
|
|
181
|
+
prerelease?: string | boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Не создавать коммит
|
|
184
|
+
*/
|
|
185
|
+
noCommit?: boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Не создавать тег
|
|
188
|
+
*/
|
|
189
|
+
noTag?: boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Не пушить в remote
|
|
192
|
+
*/
|
|
193
|
+
noPush?: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Не создавать GitVerse Release
|
|
196
|
+
*/
|
|
197
|
+
noRelease?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Подробный вывод
|
|
200
|
+
*/
|
|
201
|
+
verbose?: boolean;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Информация о Git репозитории
|
|
205
|
+
*/
|
|
206
|
+
export interface GitRepoInfo {
|
|
207
|
+
/**
|
|
208
|
+
* Owner/repo (например: "rainypixel/gitverse-sdk")
|
|
209
|
+
*/
|
|
210
|
+
fullName: string;
|
|
211
|
+
/**
|
|
212
|
+
* Владелец репозитория
|
|
213
|
+
*/
|
|
214
|
+
owner: string;
|
|
215
|
+
/**
|
|
216
|
+
* Название репозитория
|
|
217
|
+
*/
|
|
218
|
+
repo: string;
|
|
219
|
+
/**
|
|
220
|
+
* URL репозитория
|
|
221
|
+
*/
|
|
222
|
+
url: string;
|
|
223
|
+
/**
|
|
224
|
+
* Текущая ветка
|
|
225
|
+
*/
|
|
226
|
+
branch: string;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Conventional Commit
|
|
230
|
+
*/
|
|
231
|
+
export interface ConventionalCommit {
|
|
232
|
+
/**
|
|
233
|
+
* Тип коммита (feat, fix, etc)
|
|
234
|
+
*/
|
|
235
|
+
type: string;
|
|
236
|
+
/**
|
|
237
|
+
* Scope (опционально)
|
|
238
|
+
*/
|
|
239
|
+
scope?: string;
|
|
240
|
+
/**
|
|
241
|
+
* Описание коммита
|
|
242
|
+
*/
|
|
243
|
+
subject: string;
|
|
244
|
+
/**
|
|
245
|
+
* Тело коммита (опционально)
|
|
246
|
+
*/
|
|
247
|
+
body?: string;
|
|
248
|
+
/**
|
|
249
|
+
* Footer (опционально)
|
|
250
|
+
*/
|
|
251
|
+
footer?: string;
|
|
252
|
+
/**
|
|
253
|
+
* Breaking change
|
|
254
|
+
*/
|
|
255
|
+
breaking: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Hash коммита
|
|
258
|
+
*/
|
|
259
|
+
hash: string;
|
|
260
|
+
/**
|
|
261
|
+
* Короткий hash
|
|
262
|
+
*/
|
|
263
|
+
shortHash: string;
|
|
264
|
+
/**
|
|
265
|
+
* Автор коммита
|
|
266
|
+
*/
|
|
267
|
+
author: string;
|
|
268
|
+
/**
|
|
269
|
+
* Email автора
|
|
270
|
+
*/
|
|
271
|
+
email: string;
|
|
272
|
+
/**
|
|
273
|
+
* Дата коммита
|
|
274
|
+
*/
|
|
275
|
+
date: Date;
|
|
276
|
+
/**
|
|
277
|
+
* Исходное сообщение коммита
|
|
278
|
+
*/
|
|
279
|
+
raw: string;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Тип изменения версии
|
|
283
|
+
*/
|
|
284
|
+
export type BumpType = "major" | "minor" | "patch" | "prerelease";
|
|
285
|
+
/**
|
|
286
|
+
* Результат анализа версии
|
|
287
|
+
*/
|
|
288
|
+
export interface VersionBump {
|
|
289
|
+
/**
|
|
290
|
+
* Текущая версия
|
|
291
|
+
*/
|
|
292
|
+
currentVersion: string;
|
|
293
|
+
/**
|
|
294
|
+
* Новая версия
|
|
295
|
+
*/
|
|
296
|
+
newVersion: string;
|
|
297
|
+
/**
|
|
298
|
+
* Тип изменения
|
|
299
|
+
*/
|
|
300
|
+
bumpType: BumpType;
|
|
301
|
+
/**
|
|
302
|
+
* Коммиты для релиза
|
|
303
|
+
*/
|
|
304
|
+
commits: ConventionalCommit[];
|
|
305
|
+
/**
|
|
306
|
+
* Есть ли breaking changes
|
|
307
|
+
*/
|
|
308
|
+
hasBreaking: boolean;
|
|
309
|
+
/**
|
|
310
|
+
* Есть ли новые features
|
|
311
|
+
*/
|
|
312
|
+
hasFeatures: boolean;
|
|
313
|
+
/**
|
|
314
|
+
* Есть ли bug fixes
|
|
315
|
+
*/
|
|
316
|
+
hasFixes: boolean;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Опции для генерации CHANGELOG
|
|
320
|
+
*/
|
|
321
|
+
export interface ChangelogGenerateOptions {
|
|
322
|
+
/**
|
|
323
|
+
* Версия релиза
|
|
324
|
+
*/
|
|
325
|
+
version: string;
|
|
326
|
+
/**
|
|
327
|
+
* Коммиты для включения
|
|
328
|
+
*/
|
|
329
|
+
commits: ConventionalCommit[];
|
|
330
|
+
/**
|
|
331
|
+
* Дата релиза
|
|
332
|
+
*/
|
|
333
|
+
date?: Date;
|
|
334
|
+
/**
|
|
335
|
+
* URL репозитория для ссылок
|
|
336
|
+
*/
|
|
337
|
+
repoUrl?: string;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Результат создания релиза
|
|
341
|
+
*/
|
|
342
|
+
export interface ReleaseResult {
|
|
343
|
+
/**
|
|
344
|
+
* Успешно ли выполнен релиз
|
|
345
|
+
*/
|
|
346
|
+
success: boolean;
|
|
347
|
+
/**
|
|
348
|
+
* Название пакета
|
|
349
|
+
*/
|
|
350
|
+
packageName: string;
|
|
351
|
+
/**
|
|
352
|
+
* Старая версия
|
|
353
|
+
*/
|
|
354
|
+
oldVersion: string;
|
|
355
|
+
/**
|
|
356
|
+
* Новая версия
|
|
357
|
+
*/
|
|
358
|
+
newVersion: string;
|
|
359
|
+
/**
|
|
360
|
+
* Созданный тег
|
|
361
|
+
*/
|
|
362
|
+
tag?: string;
|
|
363
|
+
/**
|
|
364
|
+
* URL релиза на GitVerse
|
|
365
|
+
*/
|
|
366
|
+
releaseUrl?: string;
|
|
367
|
+
/**
|
|
368
|
+
* Сообщения об ошибках
|
|
369
|
+
*/
|
|
370
|
+
errors: string[];
|
|
371
|
+
/**
|
|
372
|
+
* Предупреждения
|
|
373
|
+
*/
|
|
374
|
+
warnings: string[];
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Конфигурация GitVerse Release
|
|
378
|
+
*/
|
|
379
|
+
export interface GitVerseConfig {
|
|
380
|
+
/**
|
|
381
|
+
* Включить создание релиза через GitVerse API
|
|
382
|
+
* Требует переменную окружения GVR_TOKEN
|
|
383
|
+
*/
|
|
384
|
+
enabled: boolean;
|
|
385
|
+
/**
|
|
386
|
+
* Прерывать процесс релиза при ошибке создания release (после retry)
|
|
387
|
+
* Если false, ошибки логируются как warnings
|
|
388
|
+
*/
|
|
389
|
+
failOnError: boolean;
|
|
390
|
+
/**
|
|
391
|
+
* Проверять существование релиза перед созданием (идемпотентность)
|
|
392
|
+
* Позволяет безопасно перезапускать pipeline
|
|
393
|
+
*/
|
|
394
|
+
checkExisting: boolean;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Конфигурация retry механизма
|
|
398
|
+
*/
|
|
399
|
+
export interface RetryConfig {
|
|
400
|
+
/**
|
|
401
|
+
* Включить retry с экспоненциальным backoff
|
|
402
|
+
*/
|
|
403
|
+
enabled: boolean;
|
|
404
|
+
/**
|
|
405
|
+
* Максимальное количество попыток
|
|
406
|
+
*/
|
|
407
|
+
maxAttempts: number;
|
|
408
|
+
/**
|
|
409
|
+
* Начальная задержка между попытками (мс)
|
|
410
|
+
*/
|
|
411
|
+
initialDelay: number;
|
|
412
|
+
/**
|
|
413
|
+
* Максимальная задержка между попытками (мс)
|
|
414
|
+
* Ограничивает рост экспоненциального backoff
|
|
415
|
+
*/
|
|
416
|
+
maxDelay: number;
|
|
417
|
+
/**
|
|
418
|
+
* Список операций для retry
|
|
419
|
+
*/
|
|
420
|
+
operations: RetryOperation[];
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Типы операций для retry
|
|
424
|
+
*/
|
|
425
|
+
export type RetryOperation = "push" | "createRelease";
|
|
426
|
+
/**
|
|
427
|
+
* Допустимые значения для регистра subject
|
|
428
|
+
*/
|
|
429
|
+
export type SubjectCaseValue = "lower-case" | "upper-case" | "camel-case" | "kebab-case" | "pascal-case" | "sentence-case" | "snake-case" | "start-case";
|
|
430
|
+
/**
|
|
431
|
+
* Уровень правила commitlint
|
|
432
|
+
* 0 = disabled, 1 = warning, 2 = error
|
|
433
|
+
*/
|
|
434
|
+
export type CommitlintRuleLevel = 0 | 1 | 2;
|
|
435
|
+
/**
|
|
436
|
+
* Конфигурация для генерации commitlint конфига
|
|
437
|
+
*/
|
|
438
|
+
export interface CommitlintGeneratorConfig {
|
|
439
|
+
/**
|
|
440
|
+
* Путь для вывода commitlint конфига
|
|
441
|
+
* @default "commitlint.config.ts"
|
|
442
|
+
*/
|
|
443
|
+
output: string;
|
|
444
|
+
/**
|
|
445
|
+
* Формат выходного файла
|
|
446
|
+
* @default "ts"
|
|
447
|
+
*/
|
|
448
|
+
format: "ts" | "js" | "json";
|
|
449
|
+
/**
|
|
450
|
+
* Дополнительные scopes помимо package names
|
|
451
|
+
* @default ["deps", "ci", "docs"]
|
|
452
|
+
*/
|
|
453
|
+
scopes: string[];
|
|
454
|
+
/**
|
|
455
|
+
* Требовать обязательный scope
|
|
456
|
+
* @default false
|
|
457
|
+
*/
|
|
458
|
+
scopeRequired: boolean;
|
|
459
|
+
/**
|
|
460
|
+
* Максимальная длина header
|
|
461
|
+
* @default 100
|
|
462
|
+
*/
|
|
463
|
+
headerMaxLength: number;
|
|
464
|
+
/**
|
|
465
|
+
* Минимальная длина header
|
|
466
|
+
* @default null (disabled)
|
|
467
|
+
*/
|
|
468
|
+
headerMinLength: number | null;
|
|
469
|
+
/**
|
|
470
|
+
* Регистр subject
|
|
471
|
+
* @default null (disabled - не ограничивать)
|
|
472
|
+
*/
|
|
473
|
+
subjectCase: SubjectCaseValue | null;
|
|
474
|
+
/**
|
|
475
|
+
* Запретить точку в конце subject
|
|
476
|
+
* @default false
|
|
477
|
+
*/
|
|
478
|
+
subjectFullStop: boolean;
|
|
479
|
+
/**
|
|
480
|
+
* Максимальная длина строки body
|
|
481
|
+
* @default null (disabled)
|
|
482
|
+
*/
|
|
483
|
+
bodyMaxLineLength: number | null;
|
|
484
|
+
/**
|
|
485
|
+
* Максимальная длина строки footer
|
|
486
|
+
* @default null (disabled)
|
|
487
|
+
*/
|
|
488
|
+
footerMaxLineLength: number | null;
|
|
489
|
+
/**
|
|
490
|
+
* Правила которые будут warning (level 1) вместо error (level 2)
|
|
491
|
+
* @default ["header-max-length"]
|
|
492
|
+
*/
|
|
493
|
+
warningRules: string[];
|
|
494
|
+
/**
|
|
495
|
+
* Строгий режим - все правила error, subject-case: lower-case
|
|
496
|
+
* @default false
|
|
497
|
+
*/
|
|
498
|
+
strictMode: boolean;
|
|
499
|
+
/**
|
|
500
|
+
* Добавлять комментарии в сгенерированный файл
|
|
501
|
+
* @default true
|
|
502
|
+
*/
|
|
503
|
+
comments: boolean;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Опции для генерации commitlint конфига (CLI)
|
|
507
|
+
*/
|
|
508
|
+
export interface GenerateCommitlintOptions {
|
|
509
|
+
/**
|
|
510
|
+
* Путь к release конфигу
|
|
511
|
+
* @default ".gitversereleaserc.json"
|
|
512
|
+
*/
|
|
513
|
+
configPath?: string;
|
|
514
|
+
/**
|
|
515
|
+
* Путь для вывода commitlint конфига
|
|
516
|
+
* @default "commitlint.config.ts"
|
|
517
|
+
*/
|
|
518
|
+
output?: string;
|
|
519
|
+
/**
|
|
520
|
+
* Формат выходного файла
|
|
521
|
+
* @default "ts"
|
|
522
|
+
*/
|
|
523
|
+
format?: "ts" | "js" | "json";
|
|
524
|
+
/**
|
|
525
|
+
* Дополнительные scopes помимо package names
|
|
526
|
+
* @default ["deps", "ci", "docs"]
|
|
527
|
+
*/
|
|
528
|
+
scopes?: string[];
|
|
529
|
+
/**
|
|
530
|
+
* Требовать обязательный scope
|
|
531
|
+
* @default false
|
|
532
|
+
*/
|
|
533
|
+
scopeRequired?: boolean;
|
|
534
|
+
/**
|
|
535
|
+
* Максимальная длина header
|
|
536
|
+
* @default 100
|
|
537
|
+
*/
|
|
538
|
+
headerMaxLength?: number;
|
|
539
|
+
/**
|
|
540
|
+
* Минимальная длина header
|
|
541
|
+
* @default null (disabled)
|
|
542
|
+
*/
|
|
543
|
+
headerMinLength?: number | null;
|
|
544
|
+
/**
|
|
545
|
+
* Регистр subject
|
|
546
|
+
* @default null (disabled - не ограничивать)
|
|
547
|
+
*/
|
|
548
|
+
subjectCase?: SubjectCaseValue | null;
|
|
549
|
+
/**
|
|
550
|
+
* Запретить точку в конце subject
|
|
551
|
+
* @default false
|
|
552
|
+
*/
|
|
553
|
+
subjectFullStop?: boolean;
|
|
554
|
+
/**
|
|
555
|
+
* Максимальная длина строки body
|
|
556
|
+
* @default null (disabled)
|
|
557
|
+
*/
|
|
558
|
+
bodyMaxLineLength?: number | null;
|
|
559
|
+
/**
|
|
560
|
+
* Максимальная длина строки footer
|
|
561
|
+
* @default null (disabled)
|
|
562
|
+
*/
|
|
563
|
+
footerMaxLineLength?: number | null;
|
|
564
|
+
/**
|
|
565
|
+
* Правила которые будут warning (level 1) вместо error (level 2)
|
|
566
|
+
* @default ["header-max-length"]
|
|
567
|
+
*/
|
|
568
|
+
warningRules?: string[];
|
|
569
|
+
/**
|
|
570
|
+
* Строгий режим - все правила error, subject-case: lower-case
|
|
571
|
+
* @default false
|
|
572
|
+
*/
|
|
573
|
+
strictMode?: boolean;
|
|
574
|
+
/**
|
|
575
|
+
* Добавлять комментарии в сгенерированный файл
|
|
576
|
+
* @default true
|
|
577
|
+
*/
|
|
578
|
+
comments?: boolean;
|
|
579
|
+
/**
|
|
580
|
+
* Dry-run режим (preview без записи)
|
|
581
|
+
* @default false
|
|
582
|
+
*/
|
|
583
|
+
dryRun?: boolean;
|
|
584
|
+
/**
|
|
585
|
+
* Подробный вывод
|
|
586
|
+
* @default false
|
|
587
|
+
*/
|
|
588
|
+
verbose?: boolean;
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* Поддерживаемые платформы для бинарной дистрибуции
|
|
592
|
+
*/
|
|
593
|
+
export type BinaryPlatform = "linux-x64" | "linux-arm64" | "darwin-x64" | "darwin-arm64" | "win32-x64" | "win32-arm64";
|
|
594
|
+
/**
|
|
595
|
+
* Формат входных данных для бинарников
|
|
596
|
+
*/
|
|
597
|
+
export type BinaryInputFormat = "directory" | "tar.gz";
|
|
598
|
+
/**
|
|
599
|
+
* Допустимые значения для поля os в package.json
|
|
600
|
+
*/
|
|
601
|
+
export type NpmOS = "linux" | "darwin" | "win32" | "freebsd" | "openbsd" | "sunos" | "aix";
|
|
602
|
+
/**
|
|
603
|
+
* Допустимые значения для поля cpu в package.json
|
|
604
|
+
*/
|
|
605
|
+
export type NpmCPU = "x64" | "arm64" | "ia32" | "arm" | "mips" | "ppc64";
|
|
606
|
+
/**
|
|
607
|
+
* Расширение исполняемого файла
|
|
608
|
+
*/
|
|
609
|
+
export type BinaryExtension = "" | ".exe";
|
|
610
|
+
/**
|
|
611
|
+
* npm scope в формате @org
|
|
612
|
+
*/
|
|
613
|
+
export type NpmScope = `@${string}`;
|
|
614
|
+
/**
|
|
615
|
+
* Маппинг платформы на os/cpu значения для package.json
|
|
616
|
+
*/
|
|
617
|
+
export interface PlatformMapping {
|
|
618
|
+
/** Значение для поля os в package.json */
|
|
619
|
+
os: NpmOS;
|
|
620
|
+
/** Значение для поля cpu в package.json */
|
|
621
|
+
cpu: NpmCPU;
|
|
622
|
+
/** Расширение исполняемого файла */
|
|
623
|
+
extension: BinaryExtension;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Конфигурация бинарной дистрибуции
|
|
627
|
+
*/
|
|
628
|
+
export interface BinariesConfig {
|
|
629
|
+
/**
|
|
630
|
+
* Включить бинарную дистрибуцию
|
|
631
|
+
* @default false
|
|
632
|
+
*/
|
|
633
|
+
enabled: boolean;
|
|
634
|
+
/**
|
|
635
|
+
* npm scope (например: @rainypixel)
|
|
636
|
+
* Опционален — если не указан, пакеты публикуются без scope
|
|
637
|
+
*/
|
|
638
|
+
scope?: string;
|
|
639
|
+
/**
|
|
640
|
+
* Шаблон имени пакета
|
|
641
|
+
* Плейсхолдеры: {{scope}}, {{name}}, {{platform}}
|
|
642
|
+
*
|
|
643
|
+
* @default "{{name}}-{{platform}}" (без scope)
|
|
644
|
+
* @default "@{{scope}}/{{name}}-{{platform}}" (со scope)
|
|
645
|
+
*
|
|
646
|
+
* @example
|
|
647
|
+
* "{{name}}-{{platform}}" → "myapp-linux-x64"
|
|
648
|
+
* "@{{scope}}/{{name}}-{{platform}}" → "@org/myapp-linux-x64"
|
|
649
|
+
* "{{name}}-bin-{{platform}}" → "myapp-bin-linux-x64"
|
|
650
|
+
*/
|
|
651
|
+
packageNameTemplate?: string;
|
|
652
|
+
/**
|
|
653
|
+
* Базовое имя пакетов (например: yougile)
|
|
654
|
+
*/
|
|
655
|
+
name: string;
|
|
656
|
+
/**
|
|
657
|
+
* Имя бинарника в $PATH
|
|
658
|
+
* @default значение name
|
|
659
|
+
*/
|
|
660
|
+
binName?: string;
|
|
661
|
+
/**
|
|
662
|
+
* Директория с бинарниками (dist/yougile-linux-x64, etc.)
|
|
663
|
+
* @default "./dist"
|
|
664
|
+
*/
|
|
665
|
+
distDir: string;
|
|
666
|
+
/**
|
|
667
|
+
* Директория для генерации пакетов
|
|
668
|
+
* @default "./npm"
|
|
669
|
+
*/
|
|
670
|
+
outDir: string;
|
|
671
|
+
/**
|
|
672
|
+
* Список платформ для публикации
|
|
673
|
+
* @default ["linux-x64", "linux-arm64", "darwin-x64", "darwin-arm64", "win32-x64"]
|
|
674
|
+
*/
|
|
675
|
+
platforms: BinaryPlatform[];
|
|
676
|
+
/**
|
|
677
|
+
* Команда для публикации пакетов
|
|
678
|
+
* Поддерживает плейсхолдеры: {{packageDir}}, {{version}}, {{platform}}
|
|
679
|
+
* @default "npm publish --access public"
|
|
680
|
+
*/
|
|
681
|
+
publishCommand: string;
|
|
682
|
+
/**
|
|
683
|
+
* Путь к основному package.json для обновления optionalDependencies
|
|
684
|
+
* @default "./package.json"
|
|
685
|
+
*/
|
|
686
|
+
mainPackage: string;
|
|
687
|
+
/**
|
|
688
|
+
* Продолжать при ошибке публикации отдельной платформы
|
|
689
|
+
* @default false
|
|
690
|
+
*/
|
|
691
|
+
continueOnError: boolean;
|
|
692
|
+
/**
|
|
693
|
+
* Количество попыток retry при ошибке публикации
|
|
694
|
+
* @default 3
|
|
695
|
+
*/
|
|
696
|
+
retryAttempts: number;
|
|
697
|
+
/**
|
|
698
|
+
* Формат входных данных для бинарников
|
|
699
|
+
* - "directory": бинарники в директориях (dist/name-platform/name)
|
|
700
|
+
* - "tar.gz": бинарники в tar.gz архивах (dist/name-platform.tar.gz)
|
|
701
|
+
* @default "directory"
|
|
702
|
+
*/
|
|
703
|
+
inputFormat?: BinaryInputFormat;
|
|
704
|
+
/**
|
|
705
|
+
* Шаблон имени архива.
|
|
706
|
+
* Плейсхолдеры: {{name}}, {{platform}}
|
|
707
|
+
* Используется только при inputFormat: "tar.gz"
|
|
708
|
+
* @default "{{name}}-{{platform}}.tar.gz"
|
|
709
|
+
*/
|
|
710
|
+
archiveNameTemplate?: string;
|
|
711
|
+
/**
|
|
712
|
+
* Имя бинарника внутри архива (если отличается от name)
|
|
713
|
+
* Используется только при inputFormat: "tar.gz"
|
|
714
|
+
*/
|
|
715
|
+
sourceBinName?: string;
|
|
716
|
+
/**
|
|
717
|
+
* Маппинг имён файлов/директорий источника на npm платформы
|
|
718
|
+
* Ключ - идентификатор в имени файла (например: "linux-x64")
|
|
719
|
+
* Значение - npm платформа (например: "linux-x64")
|
|
720
|
+
*
|
|
721
|
+
* @example
|
|
722
|
+
* {
|
|
723
|
+
* "linux-x64": "linux-x64",
|
|
724
|
+
* "darwin-arm64": "darwin-arm64",
|
|
725
|
+
* "windows-x64": "win32-x64"
|
|
726
|
+
* }
|
|
727
|
+
*/
|
|
728
|
+
platformMap?: Record<string, BinaryPlatform>;
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* Успешный результат генерации платформенного пакета
|
|
732
|
+
*/
|
|
733
|
+
export interface BinaryPackageSuccess {
|
|
734
|
+
/** Платформа */
|
|
735
|
+
platform: BinaryPlatform;
|
|
736
|
+
/** Путь к сгенерированному пакету */
|
|
737
|
+
packageDir: string;
|
|
738
|
+
/** Полное имя пакета (например: @rainypixel/yougile-linux-x64) */
|
|
739
|
+
packageName: string;
|
|
740
|
+
/** Успешно сгенерирован */
|
|
741
|
+
success: true;
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* Неуспешный результат генерации платформенного пакета
|
|
745
|
+
*/
|
|
746
|
+
export interface BinaryPackageFailure {
|
|
747
|
+
/** Платформа */
|
|
748
|
+
platform: BinaryPlatform;
|
|
749
|
+
/** Путь к сгенерированному пакету (может отсутствовать при ошибке) */
|
|
750
|
+
packageDir: string;
|
|
751
|
+
/** Полное имя пакета */
|
|
752
|
+
packageName: string;
|
|
753
|
+
/** Не удалось сгенерировать */
|
|
754
|
+
success: false;
|
|
755
|
+
/** Сообщение об ошибке */
|
|
756
|
+
error: string;
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* Результат генерации платформенного пакета (discriminated union)
|
|
760
|
+
*/
|
|
761
|
+
export type BinaryPackageResult = BinaryPackageSuccess | BinaryPackageFailure;
|
|
762
|
+
/**
|
|
763
|
+
* Успешный результат публикации платформенного пакета
|
|
764
|
+
*/
|
|
765
|
+
export interface BinaryPublishSuccess {
|
|
766
|
+
/** Платформа */
|
|
767
|
+
platform: BinaryPlatform;
|
|
768
|
+
/** Полное имя пакета */
|
|
769
|
+
packageName: string;
|
|
770
|
+
/** Успешно опубликован */
|
|
771
|
+
success: true;
|
|
772
|
+
/** Количество попыток */
|
|
773
|
+
attempts: number;
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Неуспешный результат публикации платформенного пакета
|
|
777
|
+
*/
|
|
778
|
+
export interface BinaryPublishFailure {
|
|
779
|
+
/** Платформа */
|
|
780
|
+
platform: BinaryPlatform;
|
|
781
|
+
/** Полное имя пакета */
|
|
782
|
+
packageName: string;
|
|
783
|
+
/** Не удалось опубликовать */
|
|
784
|
+
success: false;
|
|
785
|
+
/** Сообщение об ошибке */
|
|
786
|
+
error: string;
|
|
787
|
+
/** Количество попыток */
|
|
788
|
+
attempts: number;
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Результат публикации платформенного пакета (discriminated union)
|
|
792
|
+
*/
|
|
793
|
+
export type BinaryPublishResult = BinaryPublishSuccess | BinaryPublishFailure;
|
|
794
|
+
/**
|
|
795
|
+
* Общий результат бинарной дистрибуции
|
|
796
|
+
*/
|
|
797
|
+
export interface BinaryDistributionResult {
|
|
798
|
+
/** Успешно ли выполнена операция */
|
|
799
|
+
success: boolean;
|
|
800
|
+
/** Версия */
|
|
801
|
+
version: string;
|
|
802
|
+
/** Результаты генерации пакетов */
|
|
803
|
+
packages: BinaryPackageResult[];
|
|
804
|
+
/** Результаты публикации */
|
|
805
|
+
published: BinaryPublishResult[];
|
|
806
|
+
/** Ошибки */
|
|
807
|
+
errors: string[];
|
|
808
|
+
/** Предупреждения */
|
|
809
|
+
warnings: string[];
|
|
810
|
+
}
|
|
811
|
+
/**
|
|
812
|
+
* Успешный результат извлечения бинарника из архива
|
|
813
|
+
*/
|
|
814
|
+
export interface BinaryExtractionSuccess {
|
|
815
|
+
success: true;
|
|
816
|
+
binaryPath: string;
|
|
817
|
+
tempDir: string;
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Неуспешный результат извлечения бинарника из архива
|
|
821
|
+
*/
|
|
822
|
+
export interface BinaryExtractionFailure {
|
|
823
|
+
success: false;
|
|
824
|
+
error: string;
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Результат извлечения бинарника из архива (discriminated union)
|
|
828
|
+
*/
|
|
829
|
+
export type BinaryExtractionResult = BinaryExtractionSuccess | BinaryExtractionFailure;
|
|
830
|
+
/**
|
|
831
|
+
* CLI опции для бинарной дистрибуции
|
|
832
|
+
*/
|
|
833
|
+
export interface BinaryCliOptions {
|
|
834
|
+
/**
|
|
835
|
+
* Тестовый прогон (не публиковать)
|
|
836
|
+
*/
|
|
837
|
+
dryRun?: boolean;
|
|
838
|
+
/**
|
|
839
|
+
* Путь к конфиг файлу
|
|
840
|
+
*/
|
|
841
|
+
config?: string;
|
|
842
|
+
/**
|
|
843
|
+
* Override версии
|
|
844
|
+
*/
|
|
845
|
+
version?: string;
|
|
846
|
+
/**
|
|
847
|
+
* Только генерация пакетов (без публикации)
|
|
848
|
+
*/
|
|
849
|
+
generateOnly?: boolean;
|
|
850
|
+
/**
|
|
851
|
+
* Не обновлять основной package.json
|
|
852
|
+
*/
|
|
853
|
+
skipMainPackage?: boolean;
|
|
854
|
+
/**
|
|
855
|
+
* Конкретные платформы для обработки
|
|
856
|
+
*/
|
|
857
|
+
platforms?: BinaryPlatform[];
|
|
858
|
+
/**
|
|
859
|
+
* Подробный вывод
|
|
860
|
+
*/
|
|
861
|
+
verbose?: boolean;
|
|
862
|
+
}
|