@build-script/package-tools 0.0.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/LICENSE +21 -0
- package/README.md +136 -0
- package/config/rig.json +6 -0
- package/lib/command-file-map.generated.d.ts +23 -0
- package/lib/command-file-map.generated.d.ts.map +1 -0
- package/lib/command-file-map.generated.js +27 -0
- package/lib/command-file-map.generated.js.map +1 -0
- package/lib/commands/detect-package-change.d.ts +14 -0
- package/lib/commands/detect-package-change.d.ts.map +1 -0
- package/lib/commands/detect-package-change.js +55 -0
- package/lib/commands/detect-package-change.js.map +1 -0
- package/lib/commands/monorepo-bump-version.d.ts +22 -0
- package/lib/commands/monorepo-bump-version.d.ts.map +1 -0
- package/lib/commands/monorepo-bump-version.js +121 -0
- package/lib/commands/monorepo-bump-version.js.map +1 -0
- package/lib/commands/monorepo-cnpm-sync.d.ts +8 -0
- package/lib/commands/monorepo-cnpm-sync.d.ts.map +1 -0
- package/lib/commands/monorepo-cnpm-sync.js +16 -0
- package/lib/commands/monorepo-cnpm-sync.js.map +1 -0
- package/lib/commands/monorepo-invalid.d.ts +8 -0
- package/lib/commands/monorepo-invalid.d.ts.map +1 -0
- package/lib/commands/monorepo-invalid.js +19 -0
- package/lib/commands/monorepo-invalid.js.map +1 -0
- package/lib/commands/monorepo-list.d.ts +22 -0
- package/lib/commands/monorepo-list.d.ts.map +1 -0
- package/lib/commands/monorepo-list.js +40 -0
- package/lib/commands/monorepo-list.js.map +1 -0
- package/lib/commands/monorepo-publish.d.ts +22 -0
- package/lib/commands/monorepo-publish.d.ts.map +1 -0
- package/lib/commands/monorepo-publish.js +178 -0
- package/lib/commands/monorepo-publish.js.map +1 -0
- package/lib/commands/monorepo-tsconfig.d.ts +14 -0
- package/lib/commands/monorepo-tsconfig.d.ts.map +1 -0
- package/lib/commands/monorepo-tsconfig.js +131 -0
- package/lib/commands/monorepo-tsconfig.js.map +1 -0
- package/lib/commands/monorepo-upgrade.d.ts +8 -0
- package/lib/commands/monorepo-upgrade.d.ts.map +1 -0
- package/lib/commands/monorepo-upgrade.js +110 -0
- package/lib/commands/monorepo-upgrade.js.map +1 -0
- package/lib/commands/run-if-version-mismatch.d.ts +23 -0
- package/lib/commands/run-if-version-mismatch.d.ts.map +1 -0
- package/lib/commands/run-if-version-mismatch.js +64 -0
- package/lib/commands/run-if-version-mismatch.js.map +1 -0
- package/lib/commands/sync-my-readme.d.ts +9 -0
- package/lib/commands/sync-my-readme.d.ts.map +1 -0
- package/lib/commands/sync-my-readme.js +51 -0
- package/lib/commands/sync-my-readme.js.map +1 -0
- package/lib/commands/test.d.ts +9 -0
- package/lib/commands/test.d.ts.map +1 -0
- package/lib/commands/test.js +16 -0
- package/lib/commands/test.js.map +1 -0
- package/lib/common/cache/escape-package-path.d.ts +2 -0
- package/lib/common/cache/escape-package-path.d.ts.map +1 -0
- package/lib/common/cache/escape-package-path.js +7 -0
- package/lib/common/cache/escape-package-path.js.map +1 -0
- package/lib/common/cache/native.npm.d.ts +50 -0
- package/lib/common/cache/native.npm.d.ts.map +1 -0
- package/lib/common/cache/native.npm.js +162 -0
- package/lib/common/cache/native.npm.js.map +1 -0
- package/lib/common/functions/cli.d.ts +85 -0
- package/lib/common/functions/cli.d.ts.map +1 -0
- package/lib/common/functions/cli.js +110 -0
- package/lib/common/functions/cli.js.map +1 -0
- package/lib/common/functions/global-lifecycle.d.ts +5 -0
- package/lib/common/functions/global-lifecycle.d.ts.map +1 -0
- package/lib/common/functions/global-lifecycle.js +34 -0
- package/lib/common/functions/global-lifecycle.js.map +1 -0
- package/lib/common/git/git.d.ts +12 -0
- package/lib/common/git/git.d.ts.map +1 -0
- package/lib/common/git/git.js +65 -0
- package/lib/common/git/git.js.map +1 -0
- package/lib/common/package-manager/constant.d.ts +2 -0
- package/lib/common/package-manager/constant.d.ts.map +1 -0
- package/lib/common/package-manager/constant.js +2 -0
- package/lib/common/package-manager/constant.js.map +1 -0
- package/lib/common/package-manager/driver.abstract.d.ts +41 -0
- package/lib/common/package-manager/driver.abstract.d.ts.map +1 -0
- package/lib/common/package-manager/driver.abstract.js +138 -0
- package/lib/common/package-manager/driver.abstract.js.map +1 -0
- package/lib/common/package-manager/driver.npm.d.ts +7 -0
- package/lib/common/package-manager/driver.npm.d.ts.map +1 -0
- package/lib/common/package-manager/driver.npm.js +11 -0
- package/lib/common/package-manager/driver.npm.js.map +1 -0
- package/lib/common/package-manager/driver.pnpm.d.ts +7 -0
- package/lib/common/package-manager/driver.pnpm.d.ts.map +1 -0
- package/lib/common/package-manager/driver.pnpm.js +83 -0
- package/lib/common/package-manager/driver.pnpm.js.map +1 -0
- package/lib/common/package-manager/functions.d.ts +13 -0
- package/lib/common/package-manager/functions.d.ts.map +1 -0
- package/lib/common/package-manager/functions.js +95 -0
- package/lib/common/package-manager/functions.js.map +1 -0
- package/lib/common/package-manager/package-json.d.ts +5 -0
- package/lib/common/package-manager/package-json.d.ts.map +1 -0
- package/lib/common/package-manager/package-json.js +50 -0
- package/lib/common/package-manager/package-json.js.map +1 -0
- package/lib/common/package-manager/package-manager.d.ts +5 -0
- package/lib/common/package-manager/package-manager.d.ts.map +1 -0
- package/lib/common/package-manager/package-manager.js +27 -0
- package/lib/common/package-manager/package-manager.js.map +1 -0
- package/lib/common/package-manager/proxy.d.ts +5 -0
- package/lib/common/package-manager/proxy.d.ts.map +1 -0
- package/lib/common/package-manager/proxy.js +116 -0
- package/lib/common/package-manager/proxy.js.map +1 -0
- package/lib/common/shared-jobs/cnpm-sync.d.ts +4 -0
- package/lib/common/shared-jobs/cnpm-sync.d.ts.map +1 -0
- package/lib/common/shared-jobs/cnpm-sync.js +52 -0
- package/lib/common/shared-jobs/cnpm-sync.js.map +1 -0
- package/lib/common/shared-jobs/detect-change-job.d.ts +12 -0
- package/lib/common/shared-jobs/detect-change-job.d.ts.map +1 -0
- package/lib/common/shared-jobs/detect-change-job.js +52 -0
- package/lib/common/shared-jobs/detect-change-job.js.map +1 -0
- package/lib/common/shared-jobs/publish-package-version-job.d.ts +4 -0
- package/lib/common/shared-jobs/publish-package-version-job.d.ts.map +1 -0
- package/lib/common/shared-jobs/publish-package-version-job.js +40 -0
- package/lib/common/shared-jobs/publish-package-version-job.js.map +1 -0
- package/lib/common/taball/decompress.d.ts +2 -0
- package/lib/common/taball/decompress.d.ts.map +1 -0
- package/lib/common/taball/decompress.js +39 -0
- package/lib/common/taball/decompress.js.map +1 -0
- package/lib/common/taball/file-download.d.ts +15 -0
- package/lib/common/taball/file-download.d.ts.map +1 -0
- package/lib/common/taball/file-download.js +137 -0
- package/lib/common/taball/file-download.js.map +1 -0
- package/lib/common/temp-work-folder.d.ts +20 -0
- package/lib/common/temp-work-folder.d.ts.map +1 -0
- package/lib/common/temp-work-folder.js +68 -0
- package/lib/common/temp-work-folder.js.map +1 -0
- package/lib/common/version.generated.d.ts +12 -0
- package/lib/common/version.generated.d.ts.map +1 -0
- package/lib/common/version.generated.js +17 -0
- package/lib/common/version.generated.js.map +1 -0
- package/lib/main.d.ts +2 -0
- package/lib/main.d.ts.map +1 -0
- package/lib/main.js +115 -0
- package/lib/main.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/load.js +12 -0
- package/package.json +59 -0
- package/src/command-file-map.generated.ts +28 -0
- package/src/command-file-map.generator.ts +23 -0
- package/src/commands/detect-package-change.ts +57 -0
- package/src/commands/monorepo-bump-version.ts +152 -0
- package/src/commands/monorepo-cnpm-sync.ts +19 -0
- package/src/commands/monorepo-invalid.ts +22 -0
- package/src/commands/monorepo-list.ts +46 -0
- package/src/commands/monorepo-publish.ts +227 -0
- package/src/commands/monorepo-tsconfig.ts +156 -0
- package/src/commands/monorepo-upgrade.ts +131 -0
- package/src/commands/run-if-version-mismatch.ts +78 -0
- package/src/commands/sync-my-readme.ts +56 -0
- package/src/commands/test.ts +18 -0
- package/src/common/cache/escape-package-path.ts +6 -0
- package/src/common/cache/native.npm.ts +206 -0
- package/src/common/functions/cli.ts +145 -0
- package/src/common/functions/global-lifecycle.ts +40 -0
- package/src/common/git/git.ts +75 -0
- package/src/common/package-manager/constant.ts +1 -0
- package/src/common/package-manager/driver.abstract.ts +162 -0
- package/src/common/package-manager/driver.npm.ts +13 -0
- package/src/common/package-manager/driver.pnpm.ts +113 -0
- package/src/common/package-manager/functions.ts +117 -0
- package/src/common/package-manager/package-json.ts +56 -0
- package/src/common/package-manager/package-manager.ts +46 -0
- package/src/common/package-manager/proxy.ts +129 -0
- package/src/common/shared-jobs/cnpm-sync.ts +57 -0
- package/src/common/shared-jobs/detect-change-job.ts +76 -0
- package/src/common/shared-jobs/publish-package-version-job.ts +46 -0
- package/src/common/taball/decompress.ts +41 -0
- package/src/common/taball/file-download.ts +166 -0
- package/src/common/temp-work-folder.ts +80 -0
- package/src/common/version.generated.ts +18 -0
- package/src/common/version.generator.ts +15 -0
- package/src/global.d.ts +17 -0
- package/src/main.ts +144 -0
- package/src/tsconfig.json +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-my-readme.js","sourceRoot":"","sources":["../../src/commands/sync-my-readme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,OAAO,OAAQ,SAAQ,aAAa;IACtB,MAAM,GAAG,EAAE,CAAC;IACZ,YAAY,GAAG,QAAQ,CAAC;IACxB,KAAK,GAAG,EAAE,CAAC;IACd,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5G,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,oBAAoB,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC;IAElB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAClB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,SAAS,GAAG,IAAI,CAAC;YAClB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,EAAE,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CommandDefine } from '../common/functions/cli.js';
|
|
2
|
+
export declare class Command extends CommandDefine {
|
|
3
|
+
protected _usage: string;
|
|
4
|
+
protected _description: string;
|
|
5
|
+
protected _help: string;
|
|
6
|
+
isHidden: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function main(): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,qBAAa,OAAQ,SAAQ,aAAa;IACzC,UAAmB,MAAM,SAAU;IACnC,UAAmB,YAAY,SAAU;IACzC,UAAmB,KAAK,SAAY;IACpB,QAAQ,UAAQ;CAChC;AAED,wBAAsB,IAAI,kBAMzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CommandDefine } from '../common/functions/cli.js';
|
|
2
|
+
import { PackageManagerUsageKind } from '../common/package-manager/driver.abstract.js';
|
|
3
|
+
import { createPackageManager } from '../common/package-manager/package-manager.js';
|
|
4
|
+
export class Command extends CommandDefine {
|
|
5
|
+
_usage = '测试参数';
|
|
6
|
+
_description = '测试命令';
|
|
7
|
+
_help = '没有帮助信息';
|
|
8
|
+
isHidden = true;
|
|
9
|
+
}
|
|
10
|
+
export async function main() {
|
|
11
|
+
const pm = await createPackageManager(PackageManagerUsageKind.Read);
|
|
12
|
+
const cache = await pm.createCacheHandler();
|
|
13
|
+
const r = await cache.downloadTarball('react-dom', 'latest');
|
|
14
|
+
console.log(r);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,MAAM,OAAO,OAAQ,SAAQ,aAAa;IACtB,MAAM,GAAG,MAAM,CAAC;IAChB,YAAY,GAAG,MAAM,CAAC;IACtB,KAAK,GAAG,QAAQ,CAAC;IACpB,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAE5C,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape-package-path.d.ts","sourceRoot":"","sources":["../../../src/common/cache/escape-package-path.ts"],"names":[],"mappings":"AAAA,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,UAKvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape-package-path.js","sourceRoot":"","sources":["../../../src/common/cache/escape-package-path.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACvD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type IPackageJson } from '@idlebox/common';
|
|
2
|
+
import type { IPackageManager } from '../package-manager/package-manager.js';
|
|
3
|
+
export interface IRegistryMetadata {
|
|
4
|
+
_attachments: any;
|
|
5
|
+
_id: string;
|
|
6
|
+
_rev: string;
|
|
7
|
+
author: IPackageJson['author'];
|
|
8
|
+
description: string;
|
|
9
|
+
'dist-tags': Record<string, string>;
|
|
10
|
+
license: string;
|
|
11
|
+
maintainers: IPackageJson['author'][];
|
|
12
|
+
name: string;
|
|
13
|
+
readme: string;
|
|
14
|
+
time: {
|
|
15
|
+
created: string;
|
|
16
|
+
modified: string;
|
|
17
|
+
[version: string]: string;
|
|
18
|
+
};
|
|
19
|
+
versions: Record<string, IPackageJson>;
|
|
20
|
+
bugs: IPackageJson['bugs'];
|
|
21
|
+
contributors: IPackageJson['contributors'];
|
|
22
|
+
homepage: string;
|
|
23
|
+
keywords: string[];
|
|
24
|
+
repository: IPackageJson['repository'];
|
|
25
|
+
_source_registry_name: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class NpmCacheHandler {
|
|
28
|
+
private readonly pm;
|
|
29
|
+
private readonly registry;
|
|
30
|
+
readonly path: string;
|
|
31
|
+
constructor(pm: IPackageManager, registry: string, path: string);
|
|
32
|
+
deleteMetadata(name: string): Promise<boolean>;
|
|
33
|
+
fetchMetadata(name: string, cacheMode?: CacheMode): Promise<IRegistryMetadata | undefined>;
|
|
34
|
+
fetchVersion(name: string, distTag?: string, cacheMode?: CacheMode): Promise<IPackageJson | undefined>;
|
|
35
|
+
private getTarballFile;
|
|
36
|
+
downloadTarball(name: string, distTag: string): Promise<string>;
|
|
37
|
+
deleteTarball(name: string, distTag: string): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare enum CacheMode {
|
|
40
|
+
Normal = "normal",
|
|
41
|
+
ForceNew = "force-renew",
|
|
42
|
+
Offline = "offline"
|
|
43
|
+
}
|
|
44
|
+
interface IMyOpts {
|
|
45
|
+
mode?: CacheMode;
|
|
46
|
+
maxRetry?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function fetchNpmWithCache(path: string, name: string, registry: string, _options?: IMyOpts): Promise<IRegistryMetadata | undefined>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=native.npm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.npm.d.ts","sourceRoot":"","sources":["../../../src/common/cache/native.npm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQ3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAM7E,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,GAAG,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,IAAI,EAAE,MAAM;gBAFX,EAAE,EAAE,eAAe,EACnB,QAAQ,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM;IAG7B,cAAc,CAAC,IAAI,EAAE,MAAM;IAIrB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,YAAmB;IAKxD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAW,EAAE,SAAS,YAAmB;IAajF,OAAO,CAAC,cAAc;IAKT,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQnD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGlD;AAeD,oBAAY,SAAS;IACpB,MAAM,WAAW;IACjB,QAAQ,gBAAgB;IACxB,OAAO,YAAY;CACnB;AAED,UAAU,OAAO;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,0CAsDvG"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { sleep } from '@idlebox/common';
|
|
2
|
+
import { logger } from '@idlebox/logger';
|
|
3
|
+
import { get as cacheGet, rm as cacheRm } from 'cacache';
|
|
4
|
+
import { rm } from 'node:fs/promises';
|
|
5
|
+
import { createRequire } from 'node:module';
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { json as npmFetchJson } from 'npm-registry-fetch';
|
|
8
|
+
import { DEFAULT_NPM_REGISTRY } from '../package-manager/constant.js';
|
|
9
|
+
import { getProxyValue } from '../package-manager/proxy.js';
|
|
10
|
+
import { downloadFileCached } from '../taball/file-download.js';
|
|
11
|
+
import { self_package_name, self_package_repository, self_package_version } from '../version.generated.js';
|
|
12
|
+
import { escapePackageNameToFilename } from './escape-package-path.js';
|
|
13
|
+
export class NpmCacheHandler {
|
|
14
|
+
pm;
|
|
15
|
+
registry;
|
|
16
|
+
path;
|
|
17
|
+
constructor(pm, registry, path) {
|
|
18
|
+
this.pm = pm;
|
|
19
|
+
this.registry = registry;
|
|
20
|
+
this.path = path;
|
|
21
|
+
}
|
|
22
|
+
deleteMetadata(name) {
|
|
23
|
+
return deleteNpmCache(this.path, name, this.registry);
|
|
24
|
+
}
|
|
25
|
+
async fetchMetadata(name, cacheMode = CacheMode.Normal) {
|
|
26
|
+
const registry = await this.pm.getNpmRegistry();
|
|
27
|
+
return fetchNpmWithCache(this.path, name, registry, { mode: cacheMode });
|
|
28
|
+
}
|
|
29
|
+
async fetchVersion(name, distTag = 'latest', cacheMode = CacheMode.Normal) {
|
|
30
|
+
const json = await this.fetchMetadata(name, cacheMode);
|
|
31
|
+
if (!json) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const version = getVersion(json, distTag);
|
|
35
|
+
if (!version) {
|
|
36
|
+
logger.warn(` ! 找不到版本信息(${name}@${distTag})`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
return version;
|
|
40
|
+
}
|
|
41
|
+
getTarballFile(name, tag) {
|
|
42
|
+
const es = escapePackageNameToFilename(name);
|
|
43
|
+
return resolve(this.path, `../package-tools/${es}-${tag}.tgz`);
|
|
44
|
+
}
|
|
45
|
+
async downloadTarball(name, distTag) {
|
|
46
|
+
const r = await this.fetchVersion(name, distTag);
|
|
47
|
+
if (!r) {
|
|
48
|
+
throw new Error(`无此版本: ${name} = ${distTag}`);
|
|
49
|
+
}
|
|
50
|
+
return await downloadFileCached(r.dist.tarball, this.getTarballFile(name, distTag));
|
|
51
|
+
}
|
|
52
|
+
deleteTarball(name, distTag) {
|
|
53
|
+
return rm(this.getTarballFile(name, distTag), { force: true });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function getVersion(json, distTag) {
|
|
57
|
+
if (!json.versions) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const v = json?.['dist-tags']?.[distTag];
|
|
61
|
+
if (!v) {
|
|
62
|
+
return json.versions[distTag];
|
|
63
|
+
}
|
|
64
|
+
return json.versions[v];
|
|
65
|
+
}
|
|
66
|
+
// type NpmLog = Exclude<FetchOptions['log'], undefined>;
|
|
67
|
+
export var CacheMode;
|
|
68
|
+
(function (CacheMode) {
|
|
69
|
+
CacheMode["Normal"] = "normal";
|
|
70
|
+
CacheMode["ForceNew"] = "force-renew";
|
|
71
|
+
CacheMode["Offline"] = "offline";
|
|
72
|
+
})(CacheMode || (CacheMode = {}));
|
|
73
|
+
const defOpt = {
|
|
74
|
+
mode: CacheMode.Normal,
|
|
75
|
+
maxRetry: 3,
|
|
76
|
+
};
|
|
77
|
+
export async function fetchNpmWithCache(path, name, registry, _options) {
|
|
78
|
+
logger.debug(` * npm-registry-fetch: ${registry} :: ${name}`);
|
|
79
|
+
const options = Object.assign({}, defOpt, _options);
|
|
80
|
+
let try_cnt = 0;
|
|
81
|
+
let retry = options.maxRetry;
|
|
82
|
+
let retry_timeout = 500;
|
|
83
|
+
let json;
|
|
84
|
+
while (true) {
|
|
85
|
+
try_cnt++;
|
|
86
|
+
retry--;
|
|
87
|
+
try {
|
|
88
|
+
const proxy = getProxyValue(registry);
|
|
89
|
+
json = (await npmFetchJson(name, {
|
|
90
|
+
cache: path,
|
|
91
|
+
registry: registry,
|
|
92
|
+
fetchRetries: 0,
|
|
93
|
+
noProxy: false,
|
|
94
|
+
preferOnline: options.mode === CacheMode.ForceNew,
|
|
95
|
+
offline: options.mode === CacheMode.Offline,
|
|
96
|
+
preferOffline: options.mode === CacheMode.Normal,
|
|
97
|
+
proxy: proxy,
|
|
98
|
+
timeout: 5000,
|
|
99
|
+
userAgent: `${self_package_name}(${self_package_version}) GongT(${self_package_repository})`,
|
|
100
|
+
}));
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
if (!e || !e.message) {
|
|
105
|
+
console.dir(e);
|
|
106
|
+
throw new Error('npm fetch throw unexpected thing');
|
|
107
|
+
}
|
|
108
|
+
if (e.statusCode === 404) {
|
|
109
|
+
logger.verbose('registry say 404, return empty.');
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
if (e.code === 'ECONNRESET')
|
|
113
|
+
retry++;
|
|
114
|
+
if (retry <= 0)
|
|
115
|
+
throw e;
|
|
116
|
+
retry_timeout = (retry_timeout / 1000) * 1.2;
|
|
117
|
+
if (retry_timeout > 15000)
|
|
118
|
+
retry_timeout = 15000;
|
|
119
|
+
logger.error(`failed fetch npm registry: ${e.message}, retry in ${(retry_timeout / 1000).toFixed(1)} seconds...`);
|
|
120
|
+
await sleep(retry_timeout);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (!json) {
|
|
124
|
+
logger.error('[!!] NPM cache structure changed!');
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
return json;
|
|
128
|
+
}
|
|
129
|
+
async function deleteNpmCache(path, name, registry) {
|
|
130
|
+
const require = createRequire(import.meta.url);
|
|
131
|
+
const cacheKey = require('make-fetch-happen/lib/cache/key.js');
|
|
132
|
+
const registries = new Set([DEFAULT_NPM_REGISTRY, 'https://registry.npmmirror.com/']);
|
|
133
|
+
if (registry) {
|
|
134
|
+
if (!registry.endsWith('/')) {
|
|
135
|
+
registry += '/';
|
|
136
|
+
}
|
|
137
|
+
registries.add(registry);
|
|
138
|
+
}
|
|
139
|
+
let deleted = false;
|
|
140
|
+
logger.debug(` - delete cache: ${name}`);
|
|
141
|
+
let i = registries.size;
|
|
142
|
+
for (const registry of registries.values()) {
|
|
143
|
+
logger.debug(` │ ${registry}${name}`);
|
|
144
|
+
const cid = cacheKey({ url: `${registry}${name}` });
|
|
145
|
+
i--;
|
|
146
|
+
const tc = i > 0 ? '├' : '└';
|
|
147
|
+
const info = await cacheGet.info(path, cid);
|
|
148
|
+
// console.log(info);
|
|
149
|
+
await cacheRm.content(path, cid);
|
|
150
|
+
// @types/cacache 最后一个参数丢失
|
|
151
|
+
await cacheRm.entry(path, cid, { removeFully: true });
|
|
152
|
+
if (info) {
|
|
153
|
+
logger.debug(` ${tc} deleted! ${cid}`);
|
|
154
|
+
deleted = true;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
logger.debug(` ${tc} not exists: ${cid}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return deleted;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=native.npm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.npm.js","sourceRoot":"","sources":["../../../src/common/cache/native.npm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export declare const CSI = "\u001B[";
|
|
2
|
+
export declare class DieError extends Error {
|
|
3
|
+
constructor(msg: string);
|
|
4
|
+
}
|
|
5
|
+
export declare const argv: import("@idlebox/args").IArgsReaderApi;
|
|
6
|
+
type ArgDefine = {
|
|
7
|
+
flag: boolean;
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
declare const common_args: {
|
|
11
|
+
quiet: {
|
|
12
|
+
flag: boolean;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
registry: {
|
|
16
|
+
flag: boolean;
|
|
17
|
+
description: string;
|
|
18
|
+
};
|
|
19
|
+
'dist-tag': {
|
|
20
|
+
flag: boolean;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
package: {
|
|
24
|
+
flag: boolean;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
json: {
|
|
28
|
+
flag: boolean;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
help: {
|
|
32
|
+
flag: boolean;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
type CommonArgs = keyof typeof common_args;
|
|
37
|
+
export declare abstract class CommandDefine {
|
|
38
|
+
/**
|
|
39
|
+
* 紧接在命令后面的参数
|
|
40
|
+
*/
|
|
41
|
+
protected abstract readonly _usage: string;
|
|
42
|
+
/**
|
|
43
|
+
* usage后面的简短说明
|
|
44
|
+
*/
|
|
45
|
+
protected abstract readonly _description: string;
|
|
46
|
+
/**
|
|
47
|
+
* 多行详细帮助信息
|
|
48
|
+
*/
|
|
49
|
+
protected abstract readonly _help: string;
|
|
50
|
+
/**
|
|
51
|
+
* 独特命令行参数
|
|
52
|
+
*/
|
|
53
|
+
protected readonly _arguments?: Record<string, ArgDefine>;
|
|
54
|
+
/**
|
|
55
|
+
* 通用命令行参数
|
|
56
|
+
*/
|
|
57
|
+
protected readonly _commonArgs?: readonly CommonArgs[];
|
|
58
|
+
readonly isHidden: boolean;
|
|
59
|
+
get help(): string;
|
|
60
|
+
get usage(): string;
|
|
61
|
+
get description(): string;
|
|
62
|
+
get commonArgs(): readonly ("json" | "quiet" | "registry" | "dist-tag" | "package" | "help")[] | undefined;
|
|
63
|
+
}
|
|
64
|
+
export declare const isVerbose: boolean;
|
|
65
|
+
export declare const isQuiet: boolean;
|
|
66
|
+
export declare const isJsonOutput: boolean;
|
|
67
|
+
export declare const isHelp: boolean;
|
|
68
|
+
export declare const distTagInput: string;
|
|
69
|
+
export declare const registryInput: string;
|
|
70
|
+
export declare const isDebugMode: boolean;
|
|
71
|
+
export declare function pArgS(s: string): string;
|
|
72
|
+
export declare function pDesc(s: string): string;
|
|
73
|
+
export declare function pCmd(s: string): string;
|
|
74
|
+
export declare const mainCliController: {
|
|
75
|
+
command: CommandDefine | undefined;
|
|
76
|
+
setCommand(cmd: CommandDefine): void;
|
|
77
|
+
};
|
|
78
|
+
export declare function printCommonOptions(): void;
|
|
79
|
+
interface IFormatOptions {
|
|
80
|
+
color?: number;
|
|
81
|
+
indent?: string;
|
|
82
|
+
}
|
|
83
|
+
export declare function formatOptions(args: Record<string, ArgDefine>, { color, indent }?: IFormatOptions): string;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/common/functions/cli.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,YAAU,CAAC;AAE3B,qBAAa,QAAS,SAAQ,KAAK;gBACtB,GAAG,EAAE,MAAM;CAIvB;AAKD,eAAO,MAAM,IAAI,wCAA0C,CAAC;AAE5D,KAAK,SAAS,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC;AACF,KAAK,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAG3C,8BAAsB,aAAa;IAClC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAC1C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAEvD,SAAgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,IAAI,IAAI,WAQP;IAED,IAAI,KAAK,WAER;IACD,IAAI,WAAW,WAEd;IACD,IAAI,UAAU,6FAEb;CACD;AAED,eAAO,MAAM,SAAS,SAA6B,CAAC;AACpD,eAAO,MAAM,OAAO,SAA+C,CAAC;AACpE,eAAO,MAAM,YAAY,SAA0B,CAAC;AACpD,eAAO,MAAM,MAAM,SAAkC,CAAC;AACtD,eAAO,MAAM,YAAY,QAAwC,CAAC;AAClE,eAAO,MAAM,aAAa,QAAwC,CAAC;AACnE,eAAO,MAAM,WAAW,SAA2B,CAAC;AAMpD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,UAE9B;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,UAE9B;AACD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,UAE7B;AAED,eAAO,MAAM,iBAAiB;aACP,aAAa,GAAG,SAAS;oBAC/B,aAAa;CAG7B,CAAC;AAEF,wBAAgB,kBAAkB,SAUjC;AAED,UAAU,cAAc;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAE,cAAmB,UAuBpG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { createArgsReader } from '@idlebox/args';
|
|
2
|
+
export const CSI = '\x1b[';
|
|
3
|
+
export class DieError extends Error {
|
|
4
|
+
constructor(msg) {
|
|
5
|
+
super(msg);
|
|
6
|
+
this.stack = this.message;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function die(msg) {
|
|
10
|
+
throw new DieError(msg);
|
|
11
|
+
}
|
|
12
|
+
export const argv = createArgsReader(process.argv.slice(2));
|
|
13
|
+
const common_args = {
|
|
14
|
+
quiet: { flag: true, description: '减少输出' },
|
|
15
|
+
registry: { flag: false, description: 'npm服务器,默认从.npmrc读取(必须有schema://)' },
|
|
16
|
+
'dist-tag': { flag: false, description: '需要从服务器读取时使用的tag,默认为"latest"' },
|
|
17
|
+
package: { flag: false, description: '实际操作前,更改当前目录(此文件夹应包含package.json)' },
|
|
18
|
+
json: { flag: true, description: '输出json格式(部分命令支持)' },
|
|
19
|
+
help: { flag: true, description: '显示帮助信息' },
|
|
20
|
+
};
|
|
21
|
+
const all_common_args = Object.keys(common_args);
|
|
22
|
+
export class CommandDefine {
|
|
23
|
+
/**
|
|
24
|
+
* 独特命令行参数
|
|
25
|
+
*/
|
|
26
|
+
_arguments;
|
|
27
|
+
/**
|
|
28
|
+
* 通用命令行参数
|
|
29
|
+
*/
|
|
30
|
+
_commonArgs;
|
|
31
|
+
isHidden = false;
|
|
32
|
+
get help() {
|
|
33
|
+
let r = this._help;
|
|
34
|
+
if (this._arguments) {
|
|
35
|
+
const opts = formatOptions(this._arguments);
|
|
36
|
+
if (r)
|
|
37
|
+
r += '\n';
|
|
38
|
+
r += opts;
|
|
39
|
+
}
|
|
40
|
+
return r;
|
|
41
|
+
}
|
|
42
|
+
get usage() {
|
|
43
|
+
return this._usage;
|
|
44
|
+
}
|
|
45
|
+
get description() {
|
|
46
|
+
return this._description;
|
|
47
|
+
}
|
|
48
|
+
get commonArgs() {
|
|
49
|
+
return this._commonArgs;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export const isVerbose = argv.flag('--verbose') > 0;
|
|
53
|
+
export const isQuiet = argv.flag(['--silent', '-s', '--quiet']) > 0;
|
|
54
|
+
export const isJsonOutput = argv.flag('--json') > 0;
|
|
55
|
+
export const isHelp = argv.flag(['--help', '-h']) > 0;
|
|
56
|
+
export const distTagInput = argv.single('--dist-tag') || 'latest';
|
|
57
|
+
export const registryInput = argv.single('--registry') || 'detect';
|
|
58
|
+
export const isDebugMode = argv.flag('--debug') > 0;
|
|
59
|
+
if (isVerbose && isQuiet) {
|
|
60
|
+
die('不能同时使用 --verbose 和 --quiet');
|
|
61
|
+
}
|
|
62
|
+
export function pArgS(s) {
|
|
63
|
+
return `\x1B[3;38;5;14m${s}\x1B[0m`;
|
|
64
|
+
}
|
|
65
|
+
export function pDesc(s) {
|
|
66
|
+
return `\x1B[3;2m${s}\x1B[0m`;
|
|
67
|
+
}
|
|
68
|
+
export function pCmd(s) {
|
|
69
|
+
return `\x1B[38;5;10m${s}\x1B[0m`;
|
|
70
|
+
}
|
|
71
|
+
export const mainCliController = {
|
|
72
|
+
command: undefined,
|
|
73
|
+
setCommand(cmd) {
|
|
74
|
+
this.command = cmd;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
export function printCommonOptions() {
|
|
78
|
+
process.stderr.write('\x1B[2m通用参数\x1B[0m:\n');
|
|
79
|
+
const whitelist = mainCliController.command?.commonArgs ?? all_common_args;
|
|
80
|
+
const clone_common = {};
|
|
81
|
+
for (const key of whitelist) {
|
|
82
|
+
clone_common[key] = common_args[key];
|
|
83
|
+
}
|
|
84
|
+
process.stderr.write(formatOptions(clone_common, { color: 3, indent: ' ' }));
|
|
85
|
+
}
|
|
86
|
+
export function formatOptions(args, { color, indent } = {}) {
|
|
87
|
+
let r = '';
|
|
88
|
+
if (!color)
|
|
89
|
+
color = 14;
|
|
90
|
+
if (!indent)
|
|
91
|
+
indent = '';
|
|
92
|
+
for (const [name, { description, flag }] of Object.entries(args)) {
|
|
93
|
+
const names = name.split(',').map((n) => {
|
|
94
|
+
n = n.trim();
|
|
95
|
+
if (!n.startsWith('-')) {
|
|
96
|
+
if (n.length > 1) {
|
|
97
|
+
n = `--${n}`;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
n = `-${n}`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return n;
|
|
104
|
+
});
|
|
105
|
+
const flag_suffix = flag ? '' : ' <value>';
|
|
106
|
+
r += `${indent}\x1B[38;5;${color}m${names.join(', ')}${flag_suffix}\x1B[0m: ${description}\n`;
|
|
107
|
+
}
|
|
108
|
+
return r;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/common/functions/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/common/functions/global-lifecycle.ts"],"names":[],"mappings":"AAEA,eAAO,IAAI,yBAAyB,SAAQ,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QASpC;AAED,eAAO,IAAI,kBAAkB,QAAI,CAAC;AAElC,wBAAgB,wBAAwB,SAsBvC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ensureDisposeGlobal } from '@idlebox/common';
|
|
2
|
+
export let isApplicationShuttingDown = false;
|
|
3
|
+
export function shutdown(code) {
|
|
4
|
+
if (isApplicationShuttingDown) {
|
|
5
|
+
process.exitCode = code || process.exitCode;
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
isApplicationShuttingDown = true;
|
|
9
|
+
ensureDisposeGlobal().finally(() => {
|
|
10
|
+
process.exit(code || process.exitCode);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export let shutdownExtraErase = 0;
|
|
14
|
+
export function registerShutdownHandlers() {
|
|
15
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
16
|
+
console.error('got unhandledRejection: %s', reason);
|
|
17
|
+
console.error(promise);
|
|
18
|
+
shutdown(1);
|
|
19
|
+
});
|
|
20
|
+
process.on('SIGINT', () => {
|
|
21
|
+
console.error('\ngot SIGINT');
|
|
22
|
+
shutdownExtraErase += 2;
|
|
23
|
+
shutdown(0);
|
|
24
|
+
});
|
|
25
|
+
process.on('SIGTERM', () => {
|
|
26
|
+
console.error('\ngot SIGTERM');
|
|
27
|
+
shutdownExtraErase += 2;
|
|
28
|
+
shutdown(0);
|
|
29
|
+
});
|
|
30
|
+
process.on('beforeExit', (code) => {
|
|
31
|
+
shutdown(code);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=global-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-lifecycle.js","sourceRoot":"","sources":["../../../src/common/functions/global-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,IAAI,yBAAyB,GAAG,KAAK,CAAC;AAE7C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,IAAI,yBAAyB,EAAE,CAAC;QAC/B,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;QAC5C,OAAO;IACR,CAAC;IACD,yBAAyB,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAElC,MAAM,UAAU,wBAAwB;IACvC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,kBAAkB,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/B,kBAAkB,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function requireGitInPath(): Promise<void>;
|
|
2
|
+
export declare class GitWorkingTree {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
constructor(path: string);
|
|
5
|
+
protected _exec(cmds: string[]): Promise<import("@idlebox/node").ExecaReturnValue<{
|
|
6
|
+
cwd: string;
|
|
7
|
+
verbose: boolean;
|
|
8
|
+
}>>;
|
|
9
|
+
init(): Promise<void>;
|
|
10
|
+
commitChanges(): Promise<string[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/common/git/git.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,kBAKrC;AAED,qBAAa,cAAc;aACE,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAExC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;;;;IAIxB,IAAI;IAaJ,aAAa;CAyCnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { logger } from '@idlebox/logger';
|
|
2
|
+
import { commandInPath, execLazyError, exists } from '@idlebox/node';
|
|
3
|
+
import { rm } from 'node:fs/promises';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { isVerbose } from '../functions/cli.js';
|
|
6
|
+
export async function requireGitInPath() {
|
|
7
|
+
if (await commandInPath('git')) {
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
throw new Error('git必须在PATH中');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class GitWorkingTree {
|
|
14
|
+
path;
|
|
15
|
+
constructor(path) {
|
|
16
|
+
this.path = path;
|
|
17
|
+
}
|
|
18
|
+
_exec(cmds) {
|
|
19
|
+
return execLazyError('git', cmds, { cwd: this.path, verbose: isVerbose });
|
|
20
|
+
}
|
|
21
|
+
async init() {
|
|
22
|
+
logger.debug('初始化git工作区: %s', this.path);
|
|
23
|
+
const gitDir = resolve(this.path, '.git');
|
|
24
|
+
if (await exists(gitDir)) {
|
|
25
|
+
logger.debug(' - 删除已有.git文件夹');
|
|
26
|
+
await rm(gitDir, { recursive: true, force: true });
|
|
27
|
+
}
|
|
28
|
+
await this._exec(['init']);
|
|
29
|
+
await this._exec(['add', '.']);
|
|
30
|
+
await this._exec(['commit', '-m', 'Init']);
|
|
31
|
+
logger.debug('(初始化完成)');
|
|
32
|
+
}
|
|
33
|
+
async commitChanges() {
|
|
34
|
+
logger.debug('检测文件更改:');
|
|
35
|
+
const { stdout: testOut } = await this._exec(['status']);
|
|
36
|
+
const statusOut = testOut.toString().trim();
|
|
37
|
+
if (statusOut.includes('nothing to commit, working tree clean')) {
|
|
38
|
+
logger.debug(' git工作区状态: 干净');
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
// if (isDebugMode) {
|
|
42
|
+
// await execa('git', ['diff'], { cwd: this.path, stdio: ['ignore', 2, 2] });
|
|
43
|
+
// }
|
|
44
|
+
logger.debug(' git工作区状态: 有修改');
|
|
45
|
+
await this._exec(['add', '.']);
|
|
46
|
+
await this._exec(['commit', '-m', 'DetectChangedFiles']);
|
|
47
|
+
const { stdout } = await this._exec(['log', '--name-only', '-1']);
|
|
48
|
+
const lines = stdout
|
|
49
|
+
.toString()
|
|
50
|
+
.trim()
|
|
51
|
+
.split(/\n/g)
|
|
52
|
+
.map((i) => i.trim())
|
|
53
|
+
.filter((i) => i.length > 0);
|
|
54
|
+
const titleLine = lines.indexOf('DetectChangedFiles');
|
|
55
|
+
if (titleLine === -1) {
|
|
56
|
+
throw new Error('git commit - 未知错误');
|
|
57
|
+
}
|
|
58
|
+
const files = lines.slice(titleLine + 1);
|
|
59
|
+
logger.debug(' 文件更改: %d 个 (%s%s)', files.length, files.slice(0, 5).join(', '), files.length > 5 ? ' ...' : '');
|
|
60
|
+
return files.map((item) => {
|
|
61
|
+
return item.replace('Would remove ', '');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/common/git/git.ts"],"names":[],"mappings":"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"}
|