binary-collections 2.0.11 → 2.0.13
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/binaries/binary-executor.cjs +89 -13
- package/binaries/clean-nodemodule.cjs +89 -13
- package/binaries/clean-nodemodules.cjs +89 -13
- package/binaries/dev.cjs +89 -13
- package/binaries/empty.cjs +89 -13
- package/binaries/git-reduce-size.cjs +89 -13
- package/binaries/javakill.cjs +89 -13
- package/binaries/kill-process.cjs +89 -13
- package/binaries/nodekill.cjs +89 -13
- package/binaries/prod.cjs +89 -13
- package/binaries/py.cjs +89 -13
- package/binaries/rmfind.cjs +89 -13
- package/binaries/rmx +15 -1
- package/binaries/rmx.cjs +89 -13
- package/binaries/rmx.cmd +12 -0
- package/binaries/submodule-token.cjs +89 -13
- package/binaries/test-cjs +9 -1
- package/binaries/test-cjs.cjs +89 -13
- package/binaries/test-cjs.cmd +16 -1
- package/binaries/test-esm +16 -0
- package/binaries/test-esm.cjs +254 -0
- package/binaries/test-esm.cmd +23 -0
- package/binaries/yarn-clean +1 -1
- package/binaries/yarn-clean.cjs +89 -13
- package/binaries/yarn-clean.cmd +1 -1
- package/binaries/yarn-clean.py +33 -15
- package/binaries/yc +131 -0
- package/binaries/yc.cjs +254 -0
- package/binaries/ycw +256 -0
- package/binaries/ycw.cjs +254 -0
- package/docs-src/binary-collections.md +34 -0
- package/docs-src/changelog.md +26 -0
- package/docs-src/clean-github-actions-caches.md +91 -2
- package/docs-src/copy-move-file.md +59 -0
- package/docs-src/del-gradle.md +17 -0
- package/docs-src/del-ps.md +28 -0
- package/docs-src/downloader.md +62 -0
- package/docs-src/env-helpers.md +29 -0
- package/docs-src/find-node-modules.md +17 -0
- package/docs-src/git-diff.md +33 -0
- package/docs-src/git-fix.md +34 -0
- package/docs-src/git-purge.md +17 -0
- package/docs-src/git-reduce-size.md +17 -0
- package/docs-src/git-undo.md +21 -0
- package/docs-src/kill-night-crows.md +26 -0
- package/docs-src/node-cache-cleaner.md +182 -0
- package/docs-src/node-executor.md +50 -0
- package/docs-src/node-package-packer.md +48 -0
- package/docs-src/npm-run-series.md +43 -0
- package/docs-src/package-resolutions-updater.md +22 -0
- package/docs-src/php-cs-fixer-staged.md +19 -0
- package/docs-src/print-directory-tree.md +35 -0
- package/docs-src/print-tarball-tree.md +55 -0
- package/docs-src/py.md +19 -0
- package/docs-src/remove-module.md +32 -0
- package/docs-src/rmfind-rmx.md +21 -0
- package/docs-src/rmpath.md +38 -0
- package/docs-src/run-by-checksum.md +87 -0
- package/docs-src/submodule-install.md +31 -0
- package/docs-src/submodule-remove.md +22 -0
- package/docs-src/submodule-token.md +17 -0
- package/docs-src/test-runners.md +21 -0
- package/docs-src/yarn-install.md +31 -0
- package/docs-src/yarn-reinstall.md +27 -0
- package/lib/binary-collections/config.cjs +126 -0
- package/lib/binary-collections/config.mjs +7 -0
- package/lib/binary-collections/executeScript.cjs +19 -0
- package/lib/binary-collections/executeScript.d.cts +12 -0
- package/lib/binary-collections/executeScript.mjs +6 -0
- package/lib/binary-collections/findScript.cjs +309 -0
- package/lib/binary-collections/findScript.d.cts +12 -0
- package/lib/binary-collections/findScript.mjs +7 -0
- package/lib/binary-collections/listScript.cjs +291 -0
- package/lib/binary-collections/listScript.d.cts +19 -0
- package/lib/binary-collections/listScript.mjs +7 -0
- package/lib/binary-collections.cjs +264 -157
- package/lib/binary-collections.mjs +26 -286
- package/lib/changelog.cjs +9 -14
- package/lib/changelog.mjs +2 -2
- package/lib/chunk-2MN4VPV2.mjs +246 -0
- package/lib/chunk-6C7KTYGZ.mjs +41 -0
- package/lib/{chunk-Z6JLYU2J.mjs → chunk-6RK5UCTP.mjs} +7 -12
- package/lib/chunk-CD3HF3LK.mjs +190 -0
- package/lib/chunk-FLYSZFLW.mjs +61 -0
- package/lib/{chunk-N436BNBK.mjs → chunk-GAGABICI.mjs} +19 -13
- package/lib/chunk-H44UWUFY.mjs +105 -0
- package/lib/chunk-KLKAIFKI.mjs +40 -0
- package/lib/chunk-LVSPEFU2.mjs +86 -0
- package/lib/{chunk-RWLXRTYP.mjs → chunk-MGPYPKIE.mjs} +2 -2
- package/lib/chunk-NGFK3EYW.mjs +28 -0
- package/lib/chunk-NQXUYO67.mjs +253 -0
- package/lib/chunk-NVEG3LEZ.mjs +143 -0
- package/lib/chunk-OBXLTXFJ.mjs +34 -0
- package/lib/chunk-OGXVGBRI.mjs +29 -0
- package/lib/chunk-OXV52GD5.mjs +62 -0
- package/lib/chunk-PXBMHE7O.mjs +35 -0
- package/lib/chunk-QD4T255Z.mjs +40 -0
- package/lib/chunk-QII2EKCS.mjs +26 -0
- package/lib/chunk-R5FJOR63.mjs +47 -0
- package/lib/chunk-RDGDLSPD.mjs +76 -0
- package/lib/chunk-RDN6HF5Z.mjs +79 -0
- package/lib/chunk-RJKTSUAX.mjs +123 -0
- package/lib/{chunk-XA3SNBPA.mjs → chunk-TBWXE7ST.mjs} +97 -38
- package/lib/chunk-UXCFNAR6.mjs +55 -0
- package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
- package/lib/chunk-WSHVPGNM.mjs +44 -0
- package/lib/{chunk-66PAU5PS.mjs → chunk-X2B3X7D4.mjs} +10 -6
- package/lib/clean-github-actions-caches-cli.cjs +507 -0
- package/lib/clean-github-actions-caches-cli.mjs +74 -0
- package/lib/clean-github-actions-caches.cjs +246 -106
- package/lib/clean-github-actions-caches.d.cts +53 -1
- package/lib/clean-github-actions-caches.mjs +5 -130
- package/lib/cross-env/command.cjs +63 -0
- package/lib/cross-env/command.d.ts +8 -0
- package/lib/cross-env/command.js +45 -0
- package/lib/{ps/isWin.mjs → cross-env/command.mjs} +4 -5
- package/lib/cross-env/index.cjs +178 -0
- package/lib/cross-env/index.d.ts +8 -0
- package/lib/cross-env/index.js +102 -0
- package/lib/cross-env/index.mjs +101 -0
- package/lib/cross-env/variable.cjs +60 -0
- package/lib/cross-env/variable.d.ts +7 -0
- package/lib/cross-env/variable.js +59 -0
- package/lib/cross-env/variable.mjs +9 -0
- package/lib/del-gradle.cjs +8 -13
- package/lib/del-gradle.js +8 -8
- package/lib/del-gradle.mjs +1 -1
- package/lib/del-node-modules.cjs +185 -3
- package/lib/del-node-modules.js +25 -25
- package/lib/del-node-modules.mjs +6 -3
- package/lib/{del-ps.cjs → del-ps-cli.cjs} +38 -43
- package/lib/del-ps-cli.d.mts +1 -0
- package/lib/del-ps-cli.mjs +44 -0
- package/lib/del-yarn-caches.cjs +8 -13
- package/lib/del-yarn-caches.js +2 -2
- package/lib/del-yarn-caches.mjs +1 -1
- package/lib/downloader-cli.cjs +256 -0
- package/lib/downloader-cli.d.cts +2 -0
- package/lib/downloader-cli.mjs +90 -0
- package/lib/file/copy-cli.cjs +273 -0
- package/lib/file/copy-cli.d.mts +1 -0
- package/lib/file/copy-cli.mjs +59 -0
- package/lib/file/copy.cjs +56 -0
- package/lib/file/copy.d.mts +1 -0
- package/lib/file/copy.mjs +8 -0
- package/lib/file/move-cli.cjs +272 -0
- package/lib/file/move-cli.d.mts +1 -0
- package/lib/file/move-cli.mjs +59 -0
- package/lib/file/move.cjs +55 -0
- package/lib/file/move.d.mts +1 -0
- package/lib/file/move.mjs +8 -0
- package/lib/find-node-modules-cli.cjs +1 -1
- package/lib/find-node-modules-cli.js +1 -1
- package/lib/find-node-modules-cli.mjs +1 -1
- package/lib/find-node-modules.cjs +1 -1
- package/lib/find-node-modules.mjs +1 -1
- package/lib/free-chatgpt.cjs +27 -26
- package/lib/free-chatgpt.js +10 -10
- package/lib/free-chatgpt.mjs +2 -2
- package/lib/git/user-config.cjs +9 -14
- package/lib/git/user-config.mjs +2 -2
- package/lib/git-diff-cli.cjs +273 -66
- package/lib/git-diff-cli.mjs +5 -4
- package/lib/git-diff.cjs +273 -66
- package/lib/git-diff.d.ts +2 -1
- package/lib/git-diff.js +153 -39
- package/lib/git-diff.mjs +5 -4
- package/lib/git-fix.cjs +9 -14
- package/lib/git-fix.mjs +2 -2
- package/lib/git-purge.cjs +9 -14
- package/lib/git-purge.mjs +2 -2
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.mjs +1 -1
- package/lib/kill-night-crows.cjs +7 -7
- package/lib/kill-night-crows.mjs +7 -7
- package/lib/node-cache-cleaner/npm.cjs +65 -0
- package/lib/node-cache-cleaner/npm.d.ts +2 -0
- package/lib/node-cache-cleaner/npm.js +41 -0
- package/lib/node-cache-cleaner/npm.mjs +10 -0
- package/lib/node-cache-cleaner/npx.cjs +89 -0
- package/lib/node-cache-cleaner/npx.d.ts +4 -0
- package/lib/node-cache-cleaner/npx.js +82 -0
- package/lib/{ps/index.d.mjs → node-cache-cleaner/npx.mjs} +6 -5
- package/lib/node-cache-cleaner/yarn.cjs +73 -0
- package/lib/node-cache-cleaner/yarn.d.ts +2 -0
- package/lib/node-cache-cleaner/yarn.js +62 -0
- package/lib/node-cache-cleaner/yarn.mjs +10 -0
- package/lib/node-cache-cleaner-cli.cjs +365 -0
- package/lib/node-cache-cleaner-cli.d.ts +2 -0
- package/lib/node-cache-cleaner-cli.js +57 -0
- package/lib/node-cache-cleaner-cli.mjs +60 -0
- package/lib/node-executor.cjs +272 -0
- package/lib/node-executor.d.cts +2 -0
- package/lib/node-executor.mjs +106 -0
- package/lib/node-package-packer/build-readme.cjs +150 -0
- package/lib/node-package-packer/build-readme.d.mts +10 -0
- package/lib/node-package-packer/build-readme.mjs +10 -0
- package/lib/node-package-packer/build-tarball.cjs +495 -0
- package/lib/node-package-packer/build-tarball.d.mts +33 -0
- package/lib/node-package-packer/build-tarball.mjs +175 -0
- package/lib/node-package-packer-cli.cjs +525 -0
- package/lib/node-package-packer-cli.d.mts +1 -0
- package/lib/node-package-packer-cli.mjs +34 -0
- package/lib/npm-run-series.cjs +28 -40
- package/lib/npm-run-series.mjs +21 -7
- package/lib/package-resolutions-updater-cli.cjs +255 -173
- package/lib/package-resolutions-updater-cli.mjs +19 -40
- package/lib/package-resolutions-updater.cjs +244 -141
- package/lib/package-resolutions-updater.d.mts +54 -1
- package/lib/package-resolutions-updater.mjs +8 -5
- package/lib/php-cs-fixer-staged.cjs +1 -1
- package/lib/php-cs-fixer-staged.mjs +1 -1
- package/lib/print-directory-tree.cjs +18 -20
- package/lib/print-directory-tree.mjs +11 -8
- package/lib/print-tarball-tree.cjs +262 -0
- package/lib/print-tarball-tree.d.mts +1 -0
- package/lib/print-tarball-tree.mjs +68 -0
- package/lib/ps/connected-domain.js +10 -10
- package/lib/ps/index.cjs +11 -11
- package/lib/ps/index.mjs +180 -174
- package/lib/ps/table-parser.d.ts +3 -4
- package/lib/ps/table-parser.js +15 -22
- package/lib/remove-module.cjs +19 -24
- package/lib/remove-module.mjs +2 -2
- package/lib/rm-node-module-cli.cjs +389 -0
- package/lib/rm-node-module-cli.d.cts +1 -0
- package/lib/rm-node-module-cli.mjs +92 -0
- package/lib/rm-node-modules.cjs +127 -0
- package/lib/rm-node-modules.d.cts +35 -0
- package/lib/{binary-collections-config.mjs → rm-node-modules.mjs} +3 -3
- package/lib/rmpath-cli.cjs +285 -0
- package/lib/rmpath-cli.d.mts +1 -0
- package/lib/rmpath-cli.mjs +23 -0
- package/lib/rmpath.cjs +6 -217
- package/lib/rmpath.mjs +5 -101
- package/lib/run-by-checksum/cache.cjs +69 -0
- package/lib/run-by-checksum/cache.d.ts +19 -0
- package/lib/run-by-checksum/cache.js +50 -0
- package/lib/run-by-checksum/cache.mjs +12 -0
- package/lib/run-by-checksum/hash.cjs +72 -0
- package/lib/run-by-checksum/hash.d.ts +14 -0
- package/lib/run-by-checksum/hash.js +85 -0
- package/lib/run-by-checksum/hash.mjs +10 -0
- package/lib/run-by-checksum/run.cjs +169 -0
- package/lib/run-by-checksum/run.d.ts +22 -0
- package/lib/run-by-checksum/run.js +93 -0
- package/lib/run-by-checksum/run.mjs +10 -0
- package/lib/run-by-checksum-cli.cjs +382 -0
- package/lib/run-by-checksum-cli.d.ts +2 -0
- package/lib/run-by-checksum-cli.js +43 -0
- package/lib/run-by-checksum-cli.mjs +56 -0
- package/lib/submodule-install.cjs +55 -47
- package/lib/submodule-install.mjs +48 -35
- package/lib/submodule-remove-cli.cjs +170 -4
- package/lib/submodule-remove-cli.js +5 -5
- package/lib/submodule-remove-cli.mjs +6 -4
- package/lib/utils/chatgpt.cjs +19 -13
- package/lib/utils/chatgpt.js +94 -94
- package/lib/utils/chatgpt.mjs +1 -1
- package/lib/utils/fetchResponse.cjs +24 -0
- package/lib/utils/fetchResponse.d.cts +25 -0
- package/lib/utils/fetchResponse.mjs +6 -0
- package/lib/utils/findEnvFiles.cjs +28 -46
- package/lib/utils/findEnvFiles.d.cts +19 -0
- package/lib/utils/findEnvFiles.mjs +3 -5
- package/lib/utils/findWorkspaceRoot.js +4 -4
- package/lib/utils/index.cjs +7 -12
- package/lib/utils/index.d.cts +2 -9
- package/lib/utils/index.mjs +1 -1
- package/lib/utils/isGithubTokenValid.js +7 -7
- package/lib/{ps/isWin.cjs → utils/isWindows.cjs} +12 -7
- package/lib/utils/isWindows.d.ts +5 -0
- package/lib/utils/isWindows.js +10 -0
- package/lib/utils/isWindows.mjs +10 -0
- package/lib/utils/runBash.cjs +53 -0
- package/lib/utils/runBash.d.cts +12 -0
- package/lib/utils/runBash.mjs +66 -0
- package/lib/yarn-per-branch-lock-installer.cjs +288 -0
- package/lib/yarn-per-branch-lock-installer.d.cts +2 -0
- package/lib/yarn-per-branch-lock-installer.mjs +122 -0
- package/lib/yarn-reinstall.cjs +8 -13
- package/lib/yarn-reinstall.mjs +1 -1
- package/package.json +91 -57
- package/readme.html +784 -0
- package/readme.md +107 -219
- package/releases/readme.md +6 -3
- package/test/README.md +2 -2
- package/test-project/workspaces/workspace-a/readme.md +20 -0
- package/test-project/workspaces/workspace-a/release/readme.md +42 -0
- package/test-project/workspaces/workspace-a/test/readme.md +12 -0
- package/test-project/workspaces/workspace-b/readme.md +94 -0
- package/test-project/workspaces/workspace-b/requirements.txt +1 -0
- package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/readme.md +156 -0
- package/tmp/test-repo/README.md +2 -35
- package/tmp/test-repo-runChecksum/test-complex-glob/README.md +1 -0
- package/tmp/test-repo-runChecksum/test-mixed-args/README.md +1 -0
- package/lib/binary-collections-config.cjs +0 -15
- package/lib/chunk-2CBJCW7E.mjs +0 -81
- package/lib/chunk-4UHL4WVN.mjs +0 -136
- package/lib/chunk-6HHJRKFB.mjs +0 -59
- package/lib/chunk-6S4NXESK.mjs +0 -26
- package/lib/chunk-7XTEJHOE.mjs +0 -193
- package/lib/chunk-AJDD5DZM.mjs +0 -109
- package/lib/chunk-FCDQGYBF.mjs +0 -136
- package/lib/chunk-GEYA2USY.mjs +0 -207
- package/lib/chunk-GJTGHXRA.mjs +0 -356
- package/lib/chunk-ID2WBTE2.mjs +0 -80
- package/lib/chunk-JXFOHKDM.mjs +0 -239
- package/lib/chunk-NCXAP7AA.mjs +0 -31
- package/lib/chunk-PDSXF5HY.mjs +0 -187
- package/lib/chunk-TOIVAQF7.mjs +0 -136
- package/lib/chunk-V5SKYJUB.mjs +0 -136
- package/lib/chunk-WSRETQCA.mjs +0 -59
- package/lib/chunk-YYLIQQKF.mjs +0 -31
- package/lib/del-ps.js +0 -32
- package/lib/del-ps.mjs +0 -43
- package/lib/ps/index.d.cjs +0 -17
- package/lib/ps/index.d.ts +0 -2
- package/lib/ps/index.js +0 -254
- package/lib/ps/isWin.d.ts +0 -2
- package/lib/ps/isWin.js +0 -4
- package/lib/utils/findEnvFiles.d.ts +0 -8
- package/lib/utils/findEnvFiles.js +0 -121
- package/test/package.json +0 -20
- package/test-project/package.json +0 -16
- package/tmp/test-repo/package.json +0 -7
- package/tmp/typedoc/readme.md +0 -320
- /package/lib/{binary-collections-config.d.cts → binary-collections/config.d.cts} +0 -0
- /package/lib/{del-ps.d.ts → clean-github-actions-caches-cli.d.cts} +0 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __esm = (fn, res) => function __init() {
|
|
9
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
10
|
+
};
|
|
11
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
12
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
|
|
31
|
+
// node_modules/tsup/assets/cjs_shims.js
|
|
32
|
+
var init_cjs_shims = __esm({
|
|
33
|
+
"node_modules/tsup/assets/cjs_shims.js"() {
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// src/utils/index.cjs
|
|
38
|
+
var require_utils = __commonJS({
|
|
39
|
+
"src/utils/index.cjs"(exports2, module2) {
|
|
40
|
+
init_cjs_shims();
|
|
41
|
+
var fs3 = require("fs");
|
|
42
|
+
var path3 = require("upath");
|
|
43
|
+
var minimistLib = require("minimist");
|
|
44
|
+
var argv2 = minimistLib(process.argv.slice(2));
|
|
45
|
+
var { exec } = require("child_process");
|
|
46
|
+
var { promisify } = require("util");
|
|
47
|
+
var execAsync = promisify(exec);
|
|
48
|
+
async function parseGitRemotes() {
|
|
49
|
+
try {
|
|
50
|
+
const { stdout } = await execAsync("git remote -v");
|
|
51
|
+
const lines = stdout.split("\n");
|
|
52
|
+
const remotes = {};
|
|
53
|
+
lines.forEach((line) => {
|
|
54
|
+
const [name, url] = line.split(" ");
|
|
55
|
+
if (name && url) {
|
|
56
|
+
const [repoUrl] = url.split(" ");
|
|
57
|
+
try {
|
|
58
|
+
const parsedUrl = new URL(repoUrl);
|
|
59
|
+
const pathParts = parsedUrl.pathname.split("/").filter(Boolean);
|
|
60
|
+
if (parsedUrl.hostname === "github.com" && pathParts.length === 2) {
|
|
61
|
+
let repoPath = pathParts.join("/");
|
|
62
|
+
if (repoPath.endsWith(".git")) {
|
|
63
|
+
repoPath = repoPath.slice(0, -4);
|
|
64
|
+
}
|
|
65
|
+
remotes[name] = repoPath;
|
|
66
|
+
}
|
|
67
|
+
} catch (e) {
|
|
68
|
+
console.error("URL Parsing Error:", e.message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return remotes;
|
|
73
|
+
} catch (error) {
|
|
74
|
+
console.error("Error:", error.message);
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
module2.exports.parseGitRemotes = parseGitRemotes;
|
|
79
|
+
function getArgs2(opts) {
|
|
80
|
+
if (opts) {
|
|
81
|
+
return minimistLib(process.argv.slice(2), opts);
|
|
82
|
+
}
|
|
83
|
+
return argv2;
|
|
84
|
+
}
|
|
85
|
+
module2.exports.getArgs = getArgs2;
|
|
86
|
+
function del(fullPath) {
|
|
87
|
+
try {
|
|
88
|
+
if (!fs3.existsSync(fullPath)) return;
|
|
89
|
+
const stat = fs3.lstatSync(fullPath);
|
|
90
|
+
if (stat.isSymbolicLink()) {
|
|
91
|
+
try {
|
|
92
|
+
fs3.unlinkSync(fullPath);
|
|
93
|
+
console.log("deleted symlink", fullPath);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (stat.isDirectory()) {
|
|
100
|
+
const subdir = fs3.readdirSync(fullPath).map((dirPath) => path3.resolve(fullPath, dirPath));
|
|
101
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
102
|
+
del(subdir[i]);
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
fs3.rmdirSync(fullPath);
|
|
106
|
+
console.log("deleted", fullPath);
|
|
107
|
+
} catch (_e) {
|
|
108
|
+
try {
|
|
109
|
+
fs3.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
110
|
+
console.log("deleted", fullPath);
|
|
111
|
+
} catch (ee) {
|
|
112
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
fs3.unlinkSync(fullPath);
|
|
119
|
+
console.log("deleted", fullPath);
|
|
120
|
+
} catch (_e) {
|
|
121
|
+
try {
|
|
122
|
+
fs3.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
123
|
+
console.log("deleted", fullPath);
|
|
124
|
+
} catch (ee) {
|
|
125
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
} catch (err) {
|
|
129
|
+
console.log("failed delete", fullPath, err && err.message);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
module2.exports.del = del;
|
|
133
|
+
function delStream(globStream) {
|
|
134
|
+
globStream.stream().on("data", (result) => {
|
|
135
|
+
const fullPath = path3.resolve(process.cwd(), result);
|
|
136
|
+
try {
|
|
137
|
+
if (fs3.existsSync(fullPath)) {
|
|
138
|
+
const stat = fs3.lstatSync(fullPath);
|
|
139
|
+
if (stat.isSymbolicLink()) {
|
|
140
|
+
try {
|
|
141
|
+
fs3.unlinkSync(fullPath);
|
|
142
|
+
console.log("deleted symlink", fullPath);
|
|
143
|
+
} catch (e) {
|
|
144
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
145
|
+
}
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (stat.isDirectory()) {
|
|
149
|
+
const subdir = fs3.readdirSync(fullPath).map((dirPath) => path3.resolve(fullPath, dirPath));
|
|
150
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
151
|
+
del(subdir[i]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
del(fullPath);
|
|
156
|
+
} catch (err) {
|
|
157
|
+
console.log("failed processing", fullPath, err && err.message);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
module2.exports.delStream = delStream;
|
|
162
|
+
function getFileTreeString(hashArray) {
|
|
163
|
+
const tree = {};
|
|
164
|
+
const hashMap = {};
|
|
165
|
+
for (const entry of hashArray) {
|
|
166
|
+
const [filePath, hash] = entry.split(" ");
|
|
167
|
+
hashMap[filePath] = hash;
|
|
168
|
+
const parts = filePath.split("/");
|
|
169
|
+
let current = tree;
|
|
170
|
+
for (let i = 0; i < parts.length; i++) {
|
|
171
|
+
const part = parts[i];
|
|
172
|
+
if (i === parts.length - 1) {
|
|
173
|
+
current[part] = null;
|
|
174
|
+
} else {
|
|
175
|
+
current[part] = current[part] || {};
|
|
176
|
+
current = current[part];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function printNode(node, prefix = "", parentPath = "") {
|
|
181
|
+
const keys = Object.keys(node).sort();
|
|
182
|
+
let lines = [];
|
|
183
|
+
keys.forEach((key, idx) => {
|
|
184
|
+
const isLast = idx === keys.length - 1;
|
|
185
|
+
const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
|
|
186
|
+
const currentPath = parentPath ? parentPath + "/" + key : key;
|
|
187
|
+
if (node[key] === null) {
|
|
188
|
+
lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
|
|
189
|
+
} else {
|
|
190
|
+
lines.push(prefix + branch + key + "/");
|
|
191
|
+
lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
return lines;
|
|
195
|
+
}
|
|
196
|
+
return printNode(tree, "", "").join("\n");
|
|
197
|
+
}
|
|
198
|
+
module2.exports.getFileTreeString = getFileTreeString;
|
|
199
|
+
var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
200
|
+
module2.exports.delay = delay;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// src/run-by-checksum-cli.js
|
|
205
|
+
init_cjs_shims();
|
|
206
|
+
var import_utils = __toESM(require_utils(), 1);
|
|
207
|
+
|
|
208
|
+
// src/run-by-checksum/run.js
|
|
209
|
+
init_cjs_shims();
|
|
210
|
+
|
|
211
|
+
// src/run-by-checksum/hash.js
|
|
212
|
+
init_cjs_shims();
|
|
213
|
+
var import_fs_extra = __toESM(require("fs-extra"), 1);
|
|
214
|
+
var glob = __toESM(require("glob"), 1);
|
|
215
|
+
var import_upath = __toESM(require("upath"), 1);
|
|
216
|
+
var import_upath2 = __toESM(require("upath"), 1);
|
|
217
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
218
|
+
function getAllFiles({ patterns: patterns2, ignore: ignore2, cwd }) {
|
|
219
|
+
const files = /* @__PURE__ */ new Set();
|
|
220
|
+
const root = cwd || process.cwd();
|
|
221
|
+
for (const pattern of patterns2) {
|
|
222
|
+
const matched = glob.sync(pattern, {
|
|
223
|
+
cwd: root,
|
|
224
|
+
nodir: true,
|
|
225
|
+
ignore: ignore2
|
|
226
|
+
});
|
|
227
|
+
for (const f of matched) {
|
|
228
|
+
files.add(import_upath.default.normalize(import_upath2.default.resolve(root, f)));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return [...files].sort();
|
|
232
|
+
}
|
|
233
|
+
function hashFile(file) {
|
|
234
|
+
const content = import_fs_extra.default.readFileSync(file);
|
|
235
|
+
return import_crypto.default.createHash("sha256").update(content).digest("hex");
|
|
236
|
+
}
|
|
237
|
+
function buildChecksum(files) {
|
|
238
|
+
const hash = import_crypto.default.createHash("sha256");
|
|
239
|
+
for (const file of files) {
|
|
240
|
+
hash.update(file);
|
|
241
|
+
hash.update(hashFile(file));
|
|
242
|
+
}
|
|
243
|
+
return hash.digest("hex");
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// src/run-by-checksum/cache.js
|
|
247
|
+
init_cjs_shims();
|
|
248
|
+
var import_fs_extra2 = __toESM(require("fs-extra"), 1);
|
|
249
|
+
var import_upath3 = __toESM(require("upath"), 1);
|
|
250
|
+
var import_crypto2 = __toESM(require("crypto"), 1);
|
|
251
|
+
function md5(str) {
|
|
252
|
+
return import_crypto2.default.createHash("md5").update(str).digest("hex");
|
|
253
|
+
}
|
|
254
|
+
function getCacheFile({ patterns: patterns2, ignore: ignore2, cwd }) {
|
|
255
|
+
const root = cwd || process.env.INIT_CWD || process.cwd();
|
|
256
|
+
const key = md5(
|
|
257
|
+
JSON.stringify({
|
|
258
|
+
patterns: [...patterns2].sort(),
|
|
259
|
+
ignore: [...ignore2].sort()
|
|
260
|
+
})
|
|
261
|
+
);
|
|
262
|
+
return import_upath3.default.join(root, "tmp", ".checksum", `${key}.json`);
|
|
263
|
+
}
|
|
264
|
+
function loadCache(file) {
|
|
265
|
+
try {
|
|
266
|
+
return import_fs_extra2.default.readJsonSync(file);
|
|
267
|
+
} catch {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function saveCache(file, data) {
|
|
272
|
+
import_fs_extra2.default.ensureDirSync(import_upath3.default.dirname(file));
|
|
273
|
+
import_fs_extra2.default.writeJsonSync(file, data, { spaces: 2 });
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// src/run-by-checksum/run.js
|
|
277
|
+
var import_child_process = require("child_process");
|
|
278
|
+
async function runChecksum({
|
|
279
|
+
patterns: patterns2 = [],
|
|
280
|
+
ignore: ignore2 = [],
|
|
281
|
+
exec,
|
|
282
|
+
cwd = process.env.INIT_CWD || process.cwd(),
|
|
283
|
+
dryRun = false
|
|
284
|
+
}) {
|
|
285
|
+
if (!patterns2.length && !exec) {
|
|
286
|
+
console.log("No patterns or command provided, skipping checksum runner.");
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
if (!exec) {
|
|
290
|
+
console.log("No command provided, skipping checksum runner.");
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
if (!patterns2.length) {
|
|
294
|
+
console.log("No patterns provided, skipping checksum runner.");
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
const files = getAllFiles({ patterns: patterns2, ignore: ignore2, cwd });
|
|
298
|
+
const checksum = buildChecksum(files);
|
|
299
|
+
const cacheFile = getCacheFile({ patterns: patterns2, ignore: ignore2, cwd });
|
|
300
|
+
const cache = loadCache(cacheFile);
|
|
301
|
+
if ((cache == null ? void 0 : cache.checksum) === checksum) {
|
|
302
|
+
return {
|
|
303
|
+
changed: false,
|
|
304
|
+
cacheFile,
|
|
305
|
+
files
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
if (dryRun) {
|
|
309
|
+
return {
|
|
310
|
+
changed: true,
|
|
311
|
+
cacheFile,
|
|
312
|
+
files,
|
|
313
|
+
skipped: true
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
await runCommand(exec, cwd);
|
|
317
|
+
saveCache(cacheFile, {
|
|
318
|
+
checksum,
|
|
319
|
+
files,
|
|
320
|
+
patterns: patterns2,
|
|
321
|
+
ignore: ignore2,
|
|
322
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
323
|
+
});
|
|
324
|
+
return {
|
|
325
|
+
changed: true,
|
|
326
|
+
cacheFile,
|
|
327
|
+
files
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
function runCommand(command, cwd) {
|
|
331
|
+
return new Promise((resolve, reject) => {
|
|
332
|
+
const child = (0, import_child_process.spawn)(command, {
|
|
333
|
+
shell: true,
|
|
334
|
+
stdio: "inherit",
|
|
335
|
+
cwd
|
|
336
|
+
});
|
|
337
|
+
child.on("exit", (code) => {
|
|
338
|
+
if (code === 0 || code === null) resolve();
|
|
339
|
+
else reject(new Error(`Command failed: ${code}`));
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// src/run-by-checksum-cli.js
|
|
345
|
+
var argv = (0, import_utils.getArgs)({
|
|
346
|
+
string: ["pattern", "ignore", "exec", "cwd"],
|
|
347
|
+
alias: { p: "pattern", i: "ignore", e: "exec", c: "cwd", h: "help" },
|
|
348
|
+
default: {
|
|
349
|
+
pattern: [],
|
|
350
|
+
ignore: []
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
if (argv.help) {
|
|
354
|
+
console.log(`
|
|
355
|
+
Usage: run-by-checksum [options]
|
|
356
|
+
|
|
357
|
+
Run a command when the checksum of matched files changes.
|
|
358
|
+
|
|
359
|
+
Options:
|
|
360
|
+
-p, --pattern <glob> Glob pattern(s) to include (can be repeated)
|
|
361
|
+
-i, --ignore <glob> Glob pattern(s) to exclude (can be repeated)
|
|
362
|
+
-e, --exec <command> Command to execute when checksum changes
|
|
363
|
+
-c, --cwd <dir> Working directory for glob and spawn (default: process.env.INIT_CWD or cwd)
|
|
364
|
+
-h, --help Show this help message
|
|
365
|
+
`);
|
|
366
|
+
process.exit(0);
|
|
367
|
+
}
|
|
368
|
+
var patterns = Array.isArray(argv.pattern) ? argv.pattern : [argv.pattern];
|
|
369
|
+
var ignore = Array.isArray(argv.ignore) ? argv.ignore : [argv.ignore];
|
|
370
|
+
console.log("[run-by-checksum] patterns:", patterns.join(", "));
|
|
371
|
+
console.log("[run-by-checksum] ignore:", ignore.join(", ") || "(none)");
|
|
372
|
+
console.log("[run-by-checksum] cwd:", argv.cwd || process.env.INIT_CWD || process.cwd());
|
|
373
|
+
console.log("[run-by-checksum] exec:", argv.exec || "(none)");
|
|
374
|
+
runChecksum({
|
|
375
|
+
patterns,
|
|
376
|
+
ignore,
|
|
377
|
+
exec: argv.exec,
|
|
378
|
+
cwd: argv.cwd
|
|
379
|
+
}).catch((err) => {
|
|
380
|
+
console.error(err);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const index_cjs_1 = require("./utils/index.cjs");
|
|
5
|
+
const run_js_1 = require("./run-by-checksum/run.js");
|
|
6
|
+
const argv = (0, index_cjs_1.getArgs)({
|
|
7
|
+
string: ['pattern', 'ignore', 'exec', 'cwd'],
|
|
8
|
+
alias: { p: 'pattern', i: 'ignore', e: 'exec', c: 'cwd', h: 'help' },
|
|
9
|
+
default: {
|
|
10
|
+
pattern: [],
|
|
11
|
+
ignore: []
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
if (argv.help) {
|
|
15
|
+
console.log(`
|
|
16
|
+
Usage: run-by-checksum [options]
|
|
17
|
+
|
|
18
|
+
Run a command when the checksum of matched files changes.
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
-p, --pattern <glob> Glob pattern(s) to include (can be repeated)
|
|
22
|
+
-i, --ignore <glob> Glob pattern(s) to exclude (can be repeated)
|
|
23
|
+
-e, --exec <command> Command to execute when checksum changes
|
|
24
|
+
-c, --cwd <dir> Working directory for glob and spawn (default: process.env.INIT_CWD or cwd)
|
|
25
|
+
-h, --help Show this help message
|
|
26
|
+
`);
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
29
|
+
const patterns = Array.isArray(argv.pattern) ? argv.pattern : [argv.pattern];
|
|
30
|
+
const ignore = Array.isArray(argv.ignore) ? argv.ignore : [argv.ignore];
|
|
31
|
+
console.log('[run-by-checksum] patterns:', patterns.join(', '));
|
|
32
|
+
console.log('[run-by-checksum] ignore:', ignore.join(', ') || '(none)');
|
|
33
|
+
console.log('[run-by-checksum] cwd:', argv.cwd || process.env.INIT_CWD || process.cwd());
|
|
34
|
+
console.log('[run-by-checksum] exec:', argv.exec || '(none)');
|
|
35
|
+
(0, run_js_1.runChecksum)({
|
|
36
|
+
patterns,
|
|
37
|
+
ignore,
|
|
38
|
+
exec: argv.exec,
|
|
39
|
+
cwd: argv.cwd
|
|
40
|
+
}).catch((err) => {
|
|
41
|
+
console.error(err);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
runChecksum
|
|
5
|
+
} from "./chunk-LVSPEFU2.mjs";
|
|
6
|
+
import "./chunk-QD4T255Z.mjs";
|
|
7
|
+
import "./chunk-WSHVPGNM.mjs";
|
|
8
|
+
import {
|
|
9
|
+
require_utils
|
|
10
|
+
} from "./chunk-6RK5UCTP.mjs";
|
|
11
|
+
import {
|
|
12
|
+
__toESM,
|
|
13
|
+
init_esm_shims
|
|
14
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
15
|
+
|
|
16
|
+
// src/run-by-checksum-cli.js
|
|
17
|
+
init_esm_shims();
|
|
18
|
+
var import_utils = __toESM(require_utils(), 1);
|
|
19
|
+
var argv = (0, import_utils.getArgs)({
|
|
20
|
+
string: ["pattern", "ignore", "exec", "cwd"],
|
|
21
|
+
alias: { p: "pattern", i: "ignore", e: "exec", c: "cwd", h: "help" },
|
|
22
|
+
default: {
|
|
23
|
+
pattern: [],
|
|
24
|
+
ignore: []
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
if (argv.help) {
|
|
28
|
+
console.log(`
|
|
29
|
+
Usage: run-by-checksum [options]
|
|
30
|
+
|
|
31
|
+
Run a command when the checksum of matched files changes.
|
|
32
|
+
|
|
33
|
+
Options:
|
|
34
|
+
-p, --pattern <glob> Glob pattern(s) to include (can be repeated)
|
|
35
|
+
-i, --ignore <glob> Glob pattern(s) to exclude (can be repeated)
|
|
36
|
+
-e, --exec <command> Command to execute when checksum changes
|
|
37
|
+
-c, --cwd <dir> Working directory for glob and spawn (default: process.env.INIT_CWD or cwd)
|
|
38
|
+
-h, --help Show this help message
|
|
39
|
+
`);
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
var patterns = Array.isArray(argv.pattern) ? argv.pattern : [argv.pattern];
|
|
43
|
+
var ignore = Array.isArray(argv.ignore) ? argv.ignore : [argv.ignore];
|
|
44
|
+
console.log("[run-by-checksum] patterns:", patterns.join(", "));
|
|
45
|
+
console.log("[run-by-checksum] ignore:", ignore.join(", ") || "(none)");
|
|
46
|
+
console.log("[run-by-checksum] cwd:", argv.cwd || process.env.INIT_CWD || process.cwd());
|
|
47
|
+
console.log("[run-by-checksum] exec:", argv.exec || "(none)");
|
|
48
|
+
runChecksum({
|
|
49
|
+
patterns,
|
|
50
|
+
ignore,
|
|
51
|
+
exec: argv.exec,
|
|
52
|
+
cwd: argv.cwd
|
|
53
|
+
}).catch((err) => {
|
|
54
|
+
console.error(err);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
});
|
|
@@ -19,9 +19,9 @@ var require_utils = __commonJS({
|
|
|
19
19
|
init_cjs_shims();
|
|
20
20
|
var fs2 = require("fs");
|
|
21
21
|
var path2 = require("upath");
|
|
22
|
-
var
|
|
22
|
+
var minimistLib = require("minimist");
|
|
23
|
+
var argv = minimistLib(process.argv.slice(2));
|
|
23
24
|
var { exec } = require("child_process");
|
|
24
|
-
var { URL: URL2 } = require("url");
|
|
25
25
|
var { promisify } = require("util");
|
|
26
26
|
var execAsync = promisify(exec);
|
|
27
27
|
async function parseGitRemotes() {
|
|
@@ -34,7 +34,7 @@ var require_utils = __commonJS({
|
|
|
34
34
|
if (name && url) {
|
|
35
35
|
const [repoUrl] = url.split(" ");
|
|
36
36
|
try {
|
|
37
|
-
const parsedUrl = new
|
|
37
|
+
const parsedUrl = new URL(repoUrl);
|
|
38
38
|
const pathParts = parsedUrl.pathname.split("/").filter(Boolean);
|
|
39
39
|
if (parsedUrl.hostname === "github.com" && pathParts.length === 2) {
|
|
40
40
|
let repoPath = pathParts.join("/");
|
|
@@ -55,15 +55,10 @@ var require_utils = __commonJS({
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
module2.exports.parseGitRemotes = parseGitRemotes;
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
fullPath = fullPath.charAt(0).toUpperCase() + fullPath.slice(1);
|
|
58
|
+
function getArgs2(opts) {
|
|
59
|
+
if (opts) {
|
|
60
|
+
return minimistLib(process.argv.slice(2), opts);
|
|
62
61
|
}
|
|
63
|
-
return fullPath;
|
|
64
|
-
}
|
|
65
|
-
module2.exports.joinPathPreserveDriveLetter = joinPathPreserveDriveLetter;
|
|
66
|
-
function getArgs2() {
|
|
67
62
|
return argv;
|
|
68
63
|
}
|
|
69
64
|
module2.exports.getArgs = getArgs2;
|
|
@@ -88,7 +83,7 @@ var require_utils = __commonJS({
|
|
|
88
83
|
try {
|
|
89
84
|
fs2.rmdirSync(fullPath);
|
|
90
85
|
console.log("deleted", fullPath);
|
|
91
|
-
} catch (
|
|
86
|
+
} catch (_e) {
|
|
92
87
|
try {
|
|
93
88
|
fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
94
89
|
console.log("deleted", fullPath);
|
|
@@ -101,7 +96,7 @@ var require_utils = __commonJS({
|
|
|
101
96
|
try {
|
|
102
97
|
fs2.unlinkSync(fullPath);
|
|
103
98
|
console.log("deleted", fullPath);
|
|
104
|
-
} catch (
|
|
99
|
+
} catch (_e) {
|
|
105
100
|
try {
|
|
106
101
|
fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
107
102
|
console.log("deleted", fullPath);
|
|
@@ -190,7 +185,7 @@ init_cjs_shims();
|
|
|
190
185
|
var { spawnSync } = require("child_process");
|
|
191
186
|
var color = require("ansi-colors");
|
|
192
187
|
var fs = require("fs");
|
|
193
|
-
var path = require("
|
|
188
|
+
var path = require("upath");
|
|
194
189
|
var dotenv = require("dotenv");
|
|
195
190
|
var envPath = path.resolve(process.cwd(), ".env");
|
|
196
191
|
if (fs.existsSync(envPath)) dotenv.config({ path: envPath, override: true, quiet: true });
|
|
@@ -210,7 +205,7 @@ if (args.help || args.h) {
|
|
|
210
205
|
console.log();
|
|
211
206
|
process.exit(0);
|
|
212
207
|
}
|
|
213
|
-
var ACCESS_TOKEN = process.env.
|
|
208
|
+
var ACCESS_TOKEN = process.env.ACCESS_TOKEN || process.env.GITHUB_TOKEN;
|
|
214
209
|
var ROOT = runGit(["rev-parse", "--show-toplevel"]).trim();
|
|
215
210
|
var REPO_PATH = ROOT;
|
|
216
211
|
if (args.cwd) {
|
|
@@ -227,15 +222,19 @@ if (VISITED_SUBMODULES.includes(CURRENT_PATH)) {
|
|
|
227
222
|
VISITED_SUBMODULES.push(CURRENT_PATH);
|
|
228
223
|
process.env.VISITED_SUBMODULES = VISITED_SUBMODULES.join(path.delimiter);
|
|
229
224
|
console.log(`Installing submodules at ${ROOT}`);
|
|
230
|
-
var
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
"^submodule\\..*\\.path$"
|
|
238
|
-
|
|
225
|
+
var ROOT_GITMODULES = path.join(REPO_PATH, ".gitmodules");
|
|
226
|
+
if (!fs.existsSync(ROOT_GITMODULES) || fs.statSync(ROOT_GITMODULES).size === 0) {
|
|
227
|
+
console.log(`No valid .gitmodules found at ${ROOT_GITMODULES}. Skipping submodule processing.`);
|
|
228
|
+
process.exit(0);
|
|
229
|
+
}
|
|
230
|
+
var submoduleList = [];
|
|
231
|
+
try {
|
|
232
|
+
const output = runGit(["-C", REPO_PATH, "config", "-f", ".gitmodules", "--get-regexp", "^submodule\\..*\\.path$"]);
|
|
233
|
+
submoduleList = output.split("\n").filter(Boolean);
|
|
234
|
+
} catch (err) {
|
|
235
|
+
console.log("No submodules found or .gitmodules invalid. Skipping.", err);
|
|
236
|
+
process.exit(0);
|
|
237
|
+
}
|
|
239
238
|
for (const line of submoduleList) {
|
|
240
239
|
const [KEY, MODULE_PATH] = line.trim().split(/\s+/);
|
|
241
240
|
const RELATIVE_MODULE_PATH = path.join(ROOT, MODULE_PATH);
|
|
@@ -244,11 +243,14 @@ for (const line of submoduleList) {
|
|
|
244
243
|
fs.rmSync(RELATIVE_MODULE_PATH, { recursive: true, force: true });
|
|
245
244
|
}
|
|
246
245
|
const NAME = KEY.match(/^submodule\.(.*)\.path$/)[1];
|
|
247
|
-
const URL2 = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.url`]).trim();
|
|
248
|
-
let BRANCH
|
|
246
|
+
const URL2 = runGit(["-C", REPO_PATH, "config", "-f", ".gitmodules", "--get", `submodule.${NAME}.url`]).trim();
|
|
247
|
+
let BRANCH;
|
|
249
248
|
try {
|
|
250
|
-
BRANCH = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.branch`]).trim();
|
|
251
|
-
|
|
249
|
+
BRANCH = runGit(["-C", REPO_PATH, "config", "-f", ".gitmodules", "--get", `submodule.${NAME}.branch`]).trim();
|
|
250
|
+
if (!BRANCH) BRANCH = "master";
|
|
251
|
+
} catch (err) {
|
|
252
|
+
console.log(`Error occurred while fetching branch for submodule ${NAME}:`, err);
|
|
253
|
+
BRANCH = "master";
|
|
252
254
|
}
|
|
253
255
|
console.log(`Submodule: ${color.cyan(NAME)}`);
|
|
254
256
|
console.log(` Location: ${color.magenta(MODULE_PATH)}`);
|
|
@@ -264,19 +266,27 @@ for (const line of submoduleList) {
|
|
|
264
266
|
continue;
|
|
265
267
|
}
|
|
266
268
|
if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
|
|
267
|
-
console.warn(`Submodule directory
|
|
269
|
+
console.warn(`Submodule directory missing. Attempting manual clone...`);
|
|
268
270
|
try {
|
|
269
271
|
runGit(["clone", "--branch", BRANCH, URL2, RELATIVE_MODULE_PATH]);
|
|
270
272
|
} catch (e) {
|
|
271
|
-
console.error(`Manual clone failed
|
|
273
|
+
console.error(`Manual clone failed: ${e.message}`);
|
|
272
274
|
continue;
|
|
273
275
|
}
|
|
274
276
|
if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
|
|
275
|
-
console.error(`
|
|
277
|
+
console.error(`Still missing after clone: ${RELATIVE_MODULE_PATH}`);
|
|
276
278
|
continue;
|
|
277
279
|
}
|
|
278
280
|
}
|
|
279
281
|
const GIT_MODULES = path.join(RELATIVE_MODULE_PATH, ".gitmodules");
|
|
282
|
+
if (!fs.existsSync(GIT_MODULES)) {
|
|
283
|
+
console.log(`No .gitmodules in ${RELATIVE_MODULE_PATH}. Skipping nested processing.`);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (fs.statSync(GIT_MODULES).size === 0) {
|
|
287
|
+
console.log(`Empty .gitmodules in ${RELATIVE_MODULE_PATH}. Skipping nested processing.`);
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
280
290
|
if (ACCESS_TOKEN) {
|
|
281
291
|
let URL_WITH_TOKEN;
|
|
282
292
|
let repoInfo;
|
|
@@ -291,27 +301,25 @@ for (const line of submoduleList) {
|
|
|
291
301
|
repoInfo = urlObj.pathname.substring(1);
|
|
292
302
|
URL_WITH_TOKEN = `${urlObj.protocol}//${ACCESS_TOKEN}@${urlObj.host}${urlObj.pathname}`;
|
|
293
303
|
}
|
|
294
|
-
if (URL_WITH_TOKEN
|
|
295
|
-
console.log(`Apply token for ${repoInfo} at ${MODULE_PATH}
|
|
304
|
+
if (URL_WITH_TOKEN) {
|
|
305
|
+
console.log(`Apply token for ${repoInfo} at ${MODULE_PATH}`);
|
|
296
306
|
runGit(["-C", RELATIVE_MODULE_PATH, "remote", "set-url", "origin", URL_WITH_TOKEN]);
|
|
297
307
|
}
|
|
298
308
|
}
|
|
299
309
|
runGit(["-C", RELATIVE_MODULE_PATH, "fetch", "--all"]);
|
|
300
310
|
runGit(["-C", RELATIVE_MODULE_PATH, "pull", "origin", BRANCH, "-X", "theirs"]);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
process.exit(result.status);
|
|
314
|
-
}
|
|
311
|
+
console.log(`${MODULE_PATH} has submodules`);
|
|
312
|
+
const env = Object.assign({}, process.env, {
|
|
313
|
+
VISITED_SUBMODULES: process.env.VISITED_SUBMODULES + path.delimiter + path.resolve(RELATIVE_MODULE_PATH)
|
|
314
|
+
});
|
|
315
|
+
const result = spawnSync("node", [__filename, "-cwd", RELATIVE_MODULE_PATH], {
|
|
316
|
+
stdio: "inherit",
|
|
317
|
+
env,
|
|
318
|
+
cwd: RELATIVE_MODULE_PATH
|
|
319
|
+
});
|
|
320
|
+
if (result.status !== 0) {
|
|
321
|
+
console.error(`Recursive submodule failed for ${RELATIVE_MODULE_PATH}`);
|
|
322
|
+
process.exit(result.status);
|
|
315
323
|
}
|
|
316
324
|
}
|
|
317
325
|
runGit(["-C", REPO_PATH, "submodule", "update", "--init", "--recursive"]);
|