onreza-release 1.0.1 → 2.1.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 +169 -45
- package/dist/binaries.d.ts +8 -66
- package/dist/cli.js +1388 -6414
- package/dist/cli.js.map +19 -50
- package/dist/config.d.ts +8 -4
- package/dist/index.d.ts +8 -6
- package/dist/index.js +1413 -6385
- package/dist/index.js.map +17 -48
- package/dist/providers/detector.d.ts +71 -0
- package/dist/providers/github.d.ts +53 -0
- package/dist/providers/gitverse.d.ts +48 -0
- package/dist/providers/index.d.ts +67 -0
- package/dist/providers/limits.d.ts +75 -0
- package/dist/providers/tokens.d.ts +42 -0
- package/dist/providers/types.d.ts +151 -0
- package/dist/types.d.ts +167 -131
- package/dist/utils/binary-distribution-provider.d.ts +50 -0
- package/dist/utils/binary-platforms.d.ts +1 -25
- package/dist/utils/binary-postinstall-generator.d.ts +67 -0
- package/dist/utils/git.d.ts +1 -1
- package/package.json +3 -3
- package/schema.json +66 -60
- package/dist/gitverse.d.ts +0 -91
- package/dist/utils/binary-package-generator.d.ts +0 -24
- package/dist/utils/binary-publisher.d.ts +0 -53
- package/dist/utils/binary-wrapper-generator.d.ts +0 -34
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Поддерживаемые Git платформы
|
|
3
|
+
*/
|
|
4
|
+
export type GitPlatform = "gitverse" | "github" | "gitlab";
|
|
5
|
+
/**
|
|
6
|
+
* Конфигурация для onreza-release
|
|
3
7
|
*/
|
|
4
8
|
export interface ReleaseConfig {
|
|
5
9
|
/**
|
|
@@ -19,9 +23,9 @@ export interface ReleaseConfig {
|
|
|
19
23
|
*/
|
|
20
24
|
versioning?: VersioningConfig;
|
|
21
25
|
/**
|
|
22
|
-
* Настройки GitVerse
|
|
26
|
+
* Настройки создания Release (GitVerse, GitHub, GitLab)
|
|
23
27
|
*/
|
|
24
|
-
|
|
28
|
+
release?: ReleaseProviderConfig;
|
|
25
29
|
/**
|
|
26
30
|
* Настройки retry механизма
|
|
27
31
|
*/
|
|
@@ -224,6 +228,14 @@ export interface GitRepoInfo {
|
|
|
224
228
|
* Текущая ветка
|
|
225
229
|
*/
|
|
226
230
|
branch: string;
|
|
231
|
+
/**
|
|
232
|
+
* Git платформа (gitverse, github, gitlab)
|
|
233
|
+
*/
|
|
234
|
+
platform?: GitPlatform;
|
|
235
|
+
/**
|
|
236
|
+
* Хост платформы (например: github.com, gitverse.ru)
|
|
237
|
+
*/
|
|
238
|
+
host?: string;
|
|
227
239
|
}
|
|
228
240
|
/**
|
|
229
241
|
* Conventional Commit
|
|
@@ -374,22 +386,37 @@ export interface ReleaseResult {
|
|
|
374
386
|
warnings: string[];
|
|
375
387
|
}
|
|
376
388
|
/**
|
|
377
|
-
* Конфигурация GitVerse
|
|
389
|
+
* Конфигурация Release Provider (GitVerse, GitHub, GitLab)
|
|
378
390
|
*/
|
|
379
|
-
export interface
|
|
391
|
+
export interface ReleaseProviderConfig {
|
|
380
392
|
/**
|
|
381
|
-
* Включить создание релиза через
|
|
382
|
-
* Требует
|
|
393
|
+
* Включить создание релиза через API платформы
|
|
394
|
+
* Требует соответствующий токен:
|
|
395
|
+
* - GitVerse: GVR_TOKEN
|
|
396
|
+
* - GitHub: GITHUB_TOKEN или GH_TOKEN
|
|
397
|
+
* - GitLab: GITLAB_TOKEN или GL_TOKEN
|
|
398
|
+
* @default true
|
|
383
399
|
*/
|
|
384
400
|
enabled: boolean;
|
|
401
|
+
/**
|
|
402
|
+
* Платформа для создания релиза
|
|
403
|
+
* - "auto": автоопределение по git remote или CI окружению
|
|
404
|
+
* - "gitverse": GitVerse
|
|
405
|
+
* - "github": GitHub
|
|
406
|
+
* - "gitlab": GitLab
|
|
407
|
+
* @default "auto"
|
|
408
|
+
*/
|
|
409
|
+
platform: GitPlatform | "auto";
|
|
385
410
|
/**
|
|
386
411
|
* Прерывать процесс релиза при ошибке создания release (после retry)
|
|
387
412
|
* Если false, ошибки логируются как warnings
|
|
413
|
+
* @default true
|
|
388
414
|
*/
|
|
389
415
|
failOnError: boolean;
|
|
390
416
|
/**
|
|
391
417
|
* Проверять существование релиза перед созданием (идемпотентность)
|
|
392
418
|
* Позволяет безопасно перезапускать pipeline
|
|
419
|
+
* @default true
|
|
393
420
|
*/
|
|
394
421
|
checkExisting: boolean;
|
|
395
422
|
}
|
|
@@ -508,7 +535,7 @@ export interface CommitlintGeneratorConfig {
|
|
|
508
535
|
export interface GenerateCommitlintOptions {
|
|
509
536
|
/**
|
|
510
537
|
* Путь к release конфигу
|
|
511
|
-
* @default ".
|
|
538
|
+
* @default ".onrezarelease.json"
|
|
512
539
|
*/
|
|
513
540
|
configPath?: string;
|
|
514
541
|
/**
|
|
@@ -596,31 +623,79 @@ export type BinaryPlatform = "linux-x64" | "linux-arm64" | "darwin-x64" | "darwi
|
|
|
596
623
|
*/
|
|
597
624
|
export type BinaryInputFormat = "directory" | "tar.gz";
|
|
598
625
|
/**
|
|
599
|
-
*
|
|
626
|
+
* Расширение исполняемого файла
|
|
600
627
|
*/
|
|
601
|
-
export type
|
|
628
|
+
export type BinaryExtension = "" | ".exe";
|
|
602
629
|
/**
|
|
603
|
-
*
|
|
630
|
+
* Маппинг платформы на os/arch значения
|
|
604
631
|
*/
|
|
605
|
-
export
|
|
632
|
+
export interface PlatformMapping {
|
|
633
|
+
/** Значение для os (linux, darwin, win32) */
|
|
634
|
+
os: string;
|
|
635
|
+
/** Значение для arch (x64, arm64) */
|
|
636
|
+
arch: string;
|
|
637
|
+
/** Расширение исполняемого файла */
|
|
638
|
+
extension: BinaryExtension;
|
|
639
|
+
}
|
|
606
640
|
/**
|
|
607
|
-
*
|
|
641
|
+
* Результат загрузки asset в GitVerse Release
|
|
608
642
|
*/
|
|
609
|
-
export
|
|
643
|
+
export interface BinaryAssetUploadResult {
|
|
644
|
+
/** Платформа */
|
|
645
|
+
platform: BinaryPlatform;
|
|
646
|
+
/** Имя загруженного asset */
|
|
647
|
+
assetName: string;
|
|
648
|
+
/** URL для скачивания */
|
|
649
|
+
downloadUrl: string;
|
|
650
|
+
/** Успешно ли загружен */
|
|
651
|
+
success: boolean;
|
|
652
|
+
/** Сообщение об ошибке */
|
|
653
|
+
error?: string;
|
|
654
|
+
}
|
|
610
655
|
/**
|
|
611
|
-
*
|
|
656
|
+
* Провайдер дистрибуции бинарников (абстракция)
|
|
612
657
|
*/
|
|
613
|
-
export
|
|
658
|
+
export interface BinaryDistributionProvider {
|
|
659
|
+
/** Загружает файл и возвращает URL для скачивания */
|
|
660
|
+
uploadAsset(filePath: string, assetName: string): Promise<{
|
|
661
|
+
downloadUrl: string;
|
|
662
|
+
}>;
|
|
663
|
+
}
|
|
614
664
|
/**
|
|
615
|
-
*
|
|
665
|
+
* Манифест с URL-ами для скачивания бинарников
|
|
616
666
|
*/
|
|
617
|
-
export interface
|
|
618
|
-
/**
|
|
619
|
-
|
|
620
|
-
/**
|
|
621
|
-
|
|
622
|
-
/**
|
|
623
|
-
|
|
667
|
+
export interface BinaryManifest {
|
|
668
|
+
/** Версия */
|
|
669
|
+
version: string;
|
|
670
|
+
/** Имя бинарника */
|
|
671
|
+
binName: string;
|
|
672
|
+
/** Маппинг платформ на URL-ы для скачивания */
|
|
673
|
+
assets: Record<BinaryPlatform, string>;
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* Настройки npm пакета для бинарной дистрибуции
|
|
677
|
+
*/
|
|
678
|
+
export interface BinariesNpmConfig {
|
|
679
|
+
/**
|
|
680
|
+
* Генерировать postinstall скрипт и bin wrapper
|
|
681
|
+
* @default true
|
|
682
|
+
*/
|
|
683
|
+
generateScripts: boolean;
|
|
684
|
+
/**
|
|
685
|
+
* Директория для postinstall скрипта
|
|
686
|
+
* @default "scripts"
|
|
687
|
+
*/
|
|
688
|
+
scriptsDir: string;
|
|
689
|
+
/**
|
|
690
|
+
* Директория для bin wrapper
|
|
691
|
+
* @default "bin"
|
|
692
|
+
*/
|
|
693
|
+
binDir: string;
|
|
694
|
+
/**
|
|
695
|
+
* Обновлять package.json с правильными bin и scripts.postinstall
|
|
696
|
+
* @default true
|
|
697
|
+
*/
|
|
698
|
+
updatePackageJson: boolean;
|
|
624
699
|
}
|
|
625
700
|
/**
|
|
626
701
|
* Конфигурация бинарной дистрибуции
|
|
@@ -632,25 +707,7 @@ export interface BinariesConfig {
|
|
|
632
707
|
*/
|
|
633
708
|
enabled: boolean;
|
|
634
709
|
/**
|
|
635
|
-
*
|
|
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)
|
|
710
|
+
* Базовое имя бинарника (например: yougile)
|
|
654
711
|
*/
|
|
655
712
|
name: string;
|
|
656
713
|
/**
|
|
@@ -663,60 +720,32 @@ export interface BinariesConfig {
|
|
|
663
720
|
* @default "./dist"
|
|
664
721
|
*/
|
|
665
722
|
distDir: string;
|
|
666
|
-
/**
|
|
667
|
-
* Директория для генерации пакетов
|
|
668
|
-
* @default "./npm"
|
|
669
|
-
*/
|
|
670
|
-
outDir: string;
|
|
671
723
|
/**
|
|
672
724
|
* Список платформ для публикации
|
|
673
725
|
* @default ["linux-x64", "linux-arm64", "darwin-x64", "darwin-arm64", "win32-x64"]
|
|
674
726
|
*/
|
|
675
727
|
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
728
|
/**
|
|
698
729
|
* Формат входных данных для бинарников
|
|
699
730
|
* - "directory": бинарники в директориях (dist/name-platform/name)
|
|
700
731
|
* - "tar.gz": бинарники в tar.gz архивах (dist/name-platform.tar.gz)
|
|
701
|
-
* @default "
|
|
732
|
+
* @default "tar.gz"
|
|
702
733
|
*/
|
|
703
734
|
inputFormat?: BinaryInputFormat;
|
|
704
735
|
/**
|
|
705
736
|
* Шаблон имени архива.
|
|
706
737
|
* Плейсхолдеры: {{name}}, {{platform}}
|
|
707
|
-
* Используется только при inputFormat: "tar.gz"
|
|
708
738
|
* @default "{{name}}-{{platform}}.tar.gz"
|
|
709
739
|
*/
|
|
710
740
|
archiveNameTemplate?: string;
|
|
711
741
|
/**
|
|
712
742
|
* Имя бинарника внутри архива (если отличается от name)
|
|
713
|
-
* Используется только при inputFormat: "tar.gz"
|
|
714
743
|
*/
|
|
715
744
|
sourceBinName?: string;
|
|
716
745
|
/**
|
|
717
|
-
* Маппинг имён файлов/директорий источника на
|
|
746
|
+
* Маппинг имён файлов/директорий источника на платформы
|
|
718
747
|
* Ключ - идентификатор в имени файла (например: "linux-x64")
|
|
719
|
-
* Значение -
|
|
748
|
+
* Значение - платформа (например: "linux-x64")
|
|
720
749
|
*
|
|
721
750
|
* @example
|
|
722
751
|
* {
|
|
@@ -726,61 +755,46 @@ export interface BinariesConfig {
|
|
|
726
755
|
* }
|
|
727
756
|
*/
|
|
728
757
|
platformMap?: Record<string, BinaryPlatform>;
|
|
758
|
+
/**
|
|
759
|
+
* Количество попыток retry при ошибке загрузки
|
|
760
|
+
* @default 3
|
|
761
|
+
*/
|
|
762
|
+
retryAttempts: number;
|
|
763
|
+
/**
|
|
764
|
+
* Продолжать при ошибке загрузки отдельной платформы
|
|
765
|
+
* @default false
|
|
766
|
+
*/
|
|
767
|
+
continueOnError: boolean;
|
|
768
|
+
/**
|
|
769
|
+
* Настройки генерации npm пакета
|
|
770
|
+
* Генерирует postinstall скрипт который скачивает бинарник с Release
|
|
771
|
+
*/
|
|
772
|
+
npm?: BinariesNpmConfig;
|
|
729
773
|
}
|
|
730
774
|
/**
|
|
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
|
-
* Успешный результат публикации платформенного пакета
|
|
775
|
+
* Успешный результат загрузки asset
|
|
764
776
|
*/
|
|
765
|
-
export interface
|
|
777
|
+
export interface BinaryUploadSuccess {
|
|
766
778
|
/** Платформа */
|
|
767
779
|
platform: BinaryPlatform;
|
|
768
|
-
/**
|
|
769
|
-
|
|
770
|
-
/**
|
|
780
|
+
/** Имя asset */
|
|
781
|
+
assetName: string;
|
|
782
|
+
/** URL для скачивания */
|
|
783
|
+
downloadUrl: string;
|
|
784
|
+
/** Успешно загружен */
|
|
771
785
|
success: true;
|
|
772
786
|
/** Количество попыток */
|
|
773
787
|
attempts: number;
|
|
774
788
|
}
|
|
775
789
|
/**
|
|
776
|
-
* Неуспешный результат
|
|
790
|
+
* Неуспешный результат загрузки asset
|
|
777
791
|
*/
|
|
778
|
-
export interface
|
|
792
|
+
export interface BinaryUploadFailure {
|
|
779
793
|
/** Платформа */
|
|
780
794
|
platform: BinaryPlatform;
|
|
781
|
-
/**
|
|
782
|
-
|
|
783
|
-
/** Не удалось
|
|
795
|
+
/** Имя asset */
|
|
796
|
+
assetName: string;
|
|
797
|
+
/** Не удалось загрузить */
|
|
784
798
|
success: false;
|
|
785
799
|
/** Сообщение об ошибке */
|
|
786
800
|
error: string;
|
|
@@ -788,9 +802,9 @@ export interface BinaryPublishFailure {
|
|
|
788
802
|
attempts: number;
|
|
789
803
|
}
|
|
790
804
|
/**
|
|
791
|
-
* Результат
|
|
805
|
+
* Результат загрузки asset (discriminated union)
|
|
792
806
|
*/
|
|
793
|
-
export type
|
|
807
|
+
export type BinaryUploadResult = BinaryUploadSuccess | BinaryUploadFailure;
|
|
794
808
|
/**
|
|
795
809
|
* Общий результат бинарной дистрибуции
|
|
796
810
|
*/
|
|
@@ -799,10 +813,12 @@ export interface BinaryDistributionResult {
|
|
|
799
813
|
success: boolean;
|
|
800
814
|
/** Версия */
|
|
801
815
|
version: string;
|
|
802
|
-
/**
|
|
803
|
-
|
|
804
|
-
/**
|
|
805
|
-
|
|
816
|
+
/** ID созданного релиза */
|
|
817
|
+
releaseId?: number;
|
|
818
|
+
/** URL релиза */
|
|
819
|
+
releaseUrl?: string;
|
|
820
|
+
/** Результаты загрузки assets */
|
|
821
|
+
uploads: BinaryUploadResult[];
|
|
806
822
|
/** Ошибки */
|
|
807
823
|
errors: string[];
|
|
808
824
|
/** Предупреждения */
|
|
@@ -832,7 +848,7 @@ export type BinaryExtractionResult = BinaryExtractionSuccess | BinaryExtractionF
|
|
|
832
848
|
*/
|
|
833
849
|
export interface BinaryCliOptions {
|
|
834
850
|
/**
|
|
835
|
-
* Тестовый прогон (не
|
|
851
|
+
* Тестовый прогон (не загружать)
|
|
836
852
|
*/
|
|
837
853
|
dryRun?: boolean;
|
|
838
854
|
/**
|
|
@@ -843,20 +859,40 @@ export interface BinaryCliOptions {
|
|
|
843
859
|
* Override версии
|
|
844
860
|
*/
|
|
845
861
|
version?: string;
|
|
846
|
-
/**
|
|
847
|
-
* Только генерация пакетов (без публикации)
|
|
848
|
-
*/
|
|
849
|
-
generateOnly?: boolean;
|
|
850
|
-
/**
|
|
851
|
-
* Не обновлять основной package.json
|
|
852
|
-
*/
|
|
853
|
-
skipMainPackage?: boolean;
|
|
854
862
|
/**
|
|
855
863
|
* Конкретные платформы для обработки
|
|
856
864
|
*/
|
|
857
865
|
platforms?: BinaryPlatform[];
|
|
866
|
+
/**
|
|
867
|
+
* Тег релиза (по умолчанию создаётся новый релиз)
|
|
868
|
+
*/
|
|
869
|
+
tag?: string;
|
|
858
870
|
/**
|
|
859
871
|
* Подробный вывод
|
|
860
872
|
*/
|
|
861
873
|
verbose?: boolean;
|
|
862
874
|
}
|
|
875
|
+
/**
|
|
876
|
+
* Лимиты GitVerse для артефактов релиза
|
|
877
|
+
*/
|
|
878
|
+
export interface GitVerseAssetLimits {
|
|
879
|
+
/** Максимальный размер одного файла (100 МБ) */
|
|
880
|
+
maxFileSizeBytes: number;
|
|
881
|
+
/** Максимальное количество файлов за раз */
|
|
882
|
+
maxFilesPerUpload: number;
|
|
883
|
+
/** Максимальный совокупный размер за раз (500 МБ) */
|
|
884
|
+
maxTotalSizeBytes: number;
|
|
885
|
+
/** Допустимые расширения файлов */
|
|
886
|
+
allowedExtensions: string[];
|
|
887
|
+
}
|
|
888
|
+
/**
|
|
889
|
+
* Результат валидации asset
|
|
890
|
+
*/
|
|
891
|
+
export interface AssetValidationResult {
|
|
892
|
+
/** Валиден ли файл */
|
|
893
|
+
valid: boolean;
|
|
894
|
+
/** Сообщение об ошибке */
|
|
895
|
+
error?: string;
|
|
896
|
+
/** Размер файла */
|
|
897
|
+
sizeBytes?: number;
|
|
898
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { GitVerseReleaseProvider } from "../providers";
|
|
2
|
+
import type { AssetValidationResult, BinaryDistributionProvider, GitVerseAssetLimits } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Лимиты GitVerse для артефактов релиза
|
|
5
|
+
*/
|
|
6
|
+
export declare const GITVERSE_ASSET_LIMITS: GitVerseAssetLimits;
|
|
7
|
+
/**
|
|
8
|
+
* Форматирует размер файла в человекочитаемый формат
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatFileSize(bytes: number): string;
|
|
11
|
+
/**
|
|
12
|
+
* Валидирует файл для загрузки в GitVerse Release
|
|
13
|
+
*
|
|
14
|
+
* @param filePath - Путь к файлу
|
|
15
|
+
* @returns Результат валидации
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateAssetFile(filePath: string): Promise<AssetValidationResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Валидирует набор файлов для загрузки
|
|
20
|
+
*
|
|
21
|
+
* @param filePaths - Массив путей к файлам
|
|
22
|
+
* @returns Результат валидации с совокупным размером
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateAssetBatch(filePaths: string[]): Promise<{
|
|
25
|
+
valid: boolean;
|
|
26
|
+
errors: string[];
|
|
27
|
+
totalSize: number;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* GitVerse провайдер дистрибуции бинарников
|
|
31
|
+
*/
|
|
32
|
+
export declare class GitVerseDistributionProvider implements BinaryDistributionProvider {
|
|
33
|
+
private client;
|
|
34
|
+
private releaseId;
|
|
35
|
+
constructor(client: GitVerseReleaseProvider, releaseId: number);
|
|
36
|
+
/**
|
|
37
|
+
* Загружает файл как asset в релиз
|
|
38
|
+
*
|
|
39
|
+
* @param filePath - Путь к файлу
|
|
40
|
+
* @param assetName - Имя asset в релизе
|
|
41
|
+
* @returns URL для скачивания
|
|
42
|
+
*/
|
|
43
|
+
uploadAsset(filePath: string, assetName: string): Promise<{
|
|
44
|
+
downloadUrl: string;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Возвращает ID релиза
|
|
48
|
+
*/
|
|
49
|
+
get id(): number;
|
|
50
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BinariesConfig, BinaryPlatform, PlatformMapping } from "../types";
|
|
2
2
|
/**
|
|
3
|
-
* Маппинг платформ на os/
|
|
3
|
+
* Маппинг платформ на os/arch значения
|
|
4
4
|
*/
|
|
5
5
|
export declare const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping>;
|
|
6
6
|
/**
|
|
@@ -35,30 +35,6 @@ export declare function validateBinaryExists(distDir: string, name: string, plat
|
|
|
35
35
|
* @returns Массив отсутствующих платформ
|
|
36
36
|
*/
|
|
37
37
|
export declare function validateAllBinaries(distDir: string, name: string, platforms: BinaryPlatform[]): Promise<BinaryPlatform[]>;
|
|
38
|
-
/**
|
|
39
|
-
* Возвращает дефолтный шаблон имени пакета
|
|
40
|
-
*/
|
|
41
|
-
export declare function getDefaultPackageNameTemplate(scope?: string): string;
|
|
42
|
-
/**
|
|
43
|
-
* Генерирует полное имя пакета для платформы.
|
|
44
|
-
* Поддерживает кастомный шаблон через packageNameTemplate.
|
|
45
|
-
*/
|
|
46
|
-
export declare function getPackageName(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
47
|
-
/**
|
|
48
|
-
* Генерирует путь к пакету в output директории.
|
|
49
|
-
* Создаёт структуру директорий на основе имени пакета.
|
|
50
|
-
*/
|
|
51
|
-
export declare function getPackageOutputPath(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
52
|
-
/**
|
|
53
|
-
* Раскрывает плейсхолдеры в строке
|
|
54
|
-
*/
|
|
55
|
-
export declare function expandPlaceholders(template: string, values: {
|
|
56
|
-
packageDir?: string;
|
|
57
|
-
version?: string;
|
|
58
|
-
platform?: string;
|
|
59
|
-
scope?: string;
|
|
60
|
-
name?: string;
|
|
61
|
-
}): string;
|
|
62
38
|
/**
|
|
63
39
|
* Конвертирует платформу в Node.js process.platform и process.arch
|
|
64
40
|
*/
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { BinariesNpmConfig, BinaryManifest, BinaryPlatform } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Генерирует postinstall скрипт для скачивания бинарника
|
|
4
|
+
*
|
|
5
|
+
* @param manifest - Манифест с URL-ами для скачивания
|
|
6
|
+
* @returns JavaScript код postinstall скрипта
|
|
7
|
+
*/
|
|
8
|
+
export declare function generatePostinstallScript(manifest: BinaryManifest): string;
|
|
9
|
+
/**
|
|
10
|
+
* Генерирует простой wrapper скрипт для bin/
|
|
11
|
+
*
|
|
12
|
+
* @param binName - Имя бинарника
|
|
13
|
+
* @returns JavaScript код wrapper скрипта
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateBinWrapper(binName: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Создаёт манифест для бинарной дистрибуции
|
|
18
|
+
*
|
|
19
|
+
* @param version - Версия
|
|
20
|
+
* @param binName - Имя бинарника
|
|
21
|
+
* @param assets - Маппинг платформ на URL-ы
|
|
22
|
+
* @returns Манифест
|
|
23
|
+
*/
|
|
24
|
+
export declare function createBinaryManifest(version: string, binName: string, assets: Partial<Record<BinaryPlatform, string>>): BinaryManifest;
|
|
25
|
+
/**
|
|
26
|
+
* Генерирует package.json для мастер-пакета с postinstall
|
|
27
|
+
*
|
|
28
|
+
* @param name - Имя пакета
|
|
29
|
+
* @param version - Версия
|
|
30
|
+
* @param binName - Имя бинарника
|
|
31
|
+
* @param description - Описание пакета
|
|
32
|
+
* @returns Содержимое package.json
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateMasterPackageJson(name: string, version: string, binName: string, description?: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Опции для записи npm файлов
|
|
37
|
+
*/
|
|
38
|
+
export interface WriteNpmFilesOptions {
|
|
39
|
+
/** Манифест с URL-ами */
|
|
40
|
+
manifest: BinaryManifest;
|
|
41
|
+
/** Имя бинарника для wrapper */
|
|
42
|
+
binName: string;
|
|
43
|
+
/** Настройки npm */
|
|
44
|
+
npmConfig: BinariesNpmConfig;
|
|
45
|
+
/** Базовая директория проекта */
|
|
46
|
+
baseDir?: string;
|
|
47
|
+
/** Dry-run режим */
|
|
48
|
+
dryRun?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Результат записи npm файлов
|
|
52
|
+
*/
|
|
53
|
+
export interface WriteNpmFilesResult {
|
|
54
|
+
/** Путь к postinstall скрипту */
|
|
55
|
+
postinstallPath: string;
|
|
56
|
+
/** Путь к bin wrapper */
|
|
57
|
+
binWrapperPath: string;
|
|
58
|
+
/** Был ли обновлён package.json */
|
|
59
|
+
packageJsonUpdated: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Записывает postinstall скрипт и bin wrapper в проект
|
|
63
|
+
*
|
|
64
|
+
* @param options - Опции записи
|
|
65
|
+
* @returns Результат записи
|
|
66
|
+
*/
|
|
67
|
+
export declare function writeNpmFiles(options: WriteNpmFilesOptions): Promise<WriteNpmFilesResult>;
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function gitCommand(command: string): Promise<string>;
|
|
|
18
18
|
* Получает информацию о Git репозитории
|
|
19
19
|
*
|
|
20
20
|
* Приоритет источников данных:
|
|
21
|
-
* 1. Переменные окружения GitVerse Actions
|
|
21
|
+
* 1. Переменные окружения CI (GitVerse Actions, GitHub Actions, GitLab CI)
|
|
22
22
|
* 2. Git remote URL (для локального использования)
|
|
23
23
|
*/
|
|
24
24
|
export declare function getRepoInfo(): Promise<GitRepoInfo>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "onreza-release",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Conventional Commits release automation tool with GitVerse and GitHub support",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"release",
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"typecheck": "tsc --noEmit"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@onreza/gitverse-sdk": ">=
|
|
58
|
+
"@onreza/gitverse-sdk": ">=1.0.2",
|
|
59
59
|
"jsonc-parser": "^3.3.1",
|
|
60
60
|
"tar": "^7.5.3"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@biomejs/biome": "^2.3.11",
|
|
64
|
-
"@types/bun": "1.3.
|
|
64
|
+
"@types/bun": "1.3.8",
|
|
65
65
|
"typescript": "^5.9.3"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|