binary-collections 2.0.12 → 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.cjs +89 -13
- package/binaries/submodule-token.cjs +89 -13
- package/binaries/test-cjs.cjs +89 -13
- package/binaries/test-esm.cjs +89 -13
- package/binaries/yarn-clean.cjs +89 -13
- package/binaries/yc +22 -1
- package/binaries/yc.cjs +89 -13
- 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 +115 -0
- 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/free-chatgpt.md +26 -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 +1 -1
- package/lib/binary-collections/config.mjs +1 -1
- package/lib/binary-collections/findScript.cjs +35 -10
- package/lib/binary-collections/findScript.mjs +2 -2
- package/lib/binary-collections/listScript.cjs +35 -10
- package/lib/binary-collections/listScript.mjs +2 -2
- package/lib/binary-collections.cjs +45 -25
- package/lib/binary-collections.mjs +11 -11
- package/lib/changelog.cjs +7 -12
- package/lib/changelog.mjs +2 -2
- package/lib/{chunk-SPTECFE5.mjs → chunk-2MN4VPV2.mjs} +86 -20
- package/lib/{chunk-V2IBPCEV.mjs → chunk-6C7KTYGZ.mjs} +3 -1
- package/lib/{chunk-5RTXZVCW.mjs → chunk-6RK5UCTP.mjs} +5 -10
- package/lib/{chunk-FB2WKVJD.mjs → chunk-CD3HF3LK.mjs} +67 -35
- package/lib/{chunk-6PU7BAHB.mjs → chunk-FLYSZFLW.mjs} +1 -1
- package/lib/chunk-KLKAIFKI.mjs +40 -0
- package/lib/chunk-LVSPEFU2.mjs +86 -0
- package/lib/{chunk-2LSRSEXF.mjs → chunk-MGPYPKIE.mjs} +2 -2
- package/lib/{chunk-ZOWVMII3.mjs → chunk-NQXUYO67.mjs} +35 -10
- package/lib/{chunk-C6D2TTYU.mjs → chunk-OBXLTXFJ.mjs} +4 -2
- package/lib/chunk-QD4T255Z.mjs +40 -0
- package/lib/{chunk-XPJGCDOD.mjs → chunk-QII2EKCS.mjs} +14 -2
- package/lib/chunk-RDGDLSPD.mjs +76 -0
- package/lib/{chunk-NCZPTKDV.mjs → chunk-RDN6HF5Z.mjs} +1 -1
- package/lib/chunk-RJKTSUAX.mjs +123 -0
- package/lib/{chunk-66KDU4TX.mjs → chunk-TBWXE7ST.mjs} +36 -61
- package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
- package/lib/chunk-WSHVPGNM.mjs +44 -0
- package/lib/{chunk-G5UUEWUO.mjs → chunk-X2B3X7D4.mjs} +1 -1
- package/lib/clean-github-actions-caches-cli.cjs +255 -213
- package/lib/clean-github-actions-caches-cli.mjs +25 -7
- package/lib/clean-github-actions-caches.cjs +231 -35
- package/lib/clean-github-actions-caches.d.cts +39 -1
- package/lib/clean-github-actions-caches.mjs +2 -1
- package/lib/cross-env/command.cjs +2 -2
- package/lib/cross-env/command.js +2 -2
- package/lib/cross-env/command.mjs +2 -2
- package/lib/cross-env/index.cjs +2 -2
- package/lib/cross-env/index.mjs +3 -3
- package/lib/cross-env/variable.mjs +2 -2
- package/lib/del-gradle.cjs +6 -11
- package/lib/del-gradle.mjs +1 -1
- package/lib/del-node-modules.cjs +185 -3
- package/lib/del-node-modules.js +3 -3
- package/lib/del-node-modules.mjs +6 -3
- package/lib/{del-ps.cjs → del-ps-cli.cjs} +36 -41
- package/lib/del-ps-cli.mjs +44 -0
- package/lib/del-yarn-caches.cjs +6 -11
- 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 +183 -2
- package/lib/file/copy-cli.mjs +6 -2
- package/lib/file/move-cli.cjs +183 -2
- package/lib/file/move-cli.mjs +6 -2
- package/lib/find-node-modules-cli.cjs +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 +6 -11
- package/lib/free-chatgpt.mjs +1 -1
- package/lib/git/user-config.cjs +7 -12
- package/lib/git/user-config.mjs +2 -2
- package/lib/git-diff-cli.cjs +91 -30
- package/lib/git-diff-cli.mjs +3 -3
- package/lib/git-diff.cjs +91 -30
- package/lib/git-diff.js +85 -28
- package/lib/git-diff.mjs +3 -3
- package/lib/git-fix.cjs +7 -12
- package/lib/git-fix.mjs +2 -2
- package/lib/git-purge.cjs +7 -12
- package/lib/git-purge.mjs +2 -2
- package/lib/index.cjs +1 -1
- package/lib/index.mjs +1 -1
- package/lib/node-cache-cleaner-cli.cjs +185 -2
- package/lib/node-cache-cleaner-cli.js +2 -5
- package/lib/node-cache-cleaner-cli.mjs +8 -4
- package/lib/node-executor.cjs +183 -2
- package/lib/node-executor.mjs +5 -2
- 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 +7 -12
- package/lib/npm-run-series.mjs +2 -2
- package/lib/package-resolutions-updater-cli.cjs +73 -76
- package/lib/package-resolutions-updater-cli.mjs +4 -3
- package/lib/package-resolutions-updater.cjs +71 -74
- package/lib/package-resolutions-updater.d.mts +34 -0
- package/lib/package-resolutions-updater.mjs +3 -2
- package/lib/php-cs-fixer-staged.cjs +1 -1
- package/lib/php-cs-fixer-staged.mjs +1 -1
- package/lib/print-directory-tree.cjs +16 -18
- 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/index.cjs +10 -10
- package/lib/ps/index.mjs +4 -4
- package/lib/ps/table-parser.d.ts +3 -4
- package/lib/ps/table-parser.js +9 -16
- package/lib/remove-module.cjs +17 -22
- package/lib/remove-module.mjs +2 -2
- package/lib/rm-node-module-cli.cjs +171 -4
- package/lib/rm-node-module-cli.mjs +7 -4
- 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/{ps/isWin.mjs → run-by-checksum/hash.mjs} +5 -5
- 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 +8 -13
- package/lib/submodule-install.mjs +3 -3
- package/lib/submodule-remove-cli.cjs +169 -2
- package/lib/submodule-remove-cli.js +2 -2
- package/lib/submodule-remove-cli.mjs +5 -2
- 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/index.cjs +5 -10
- package/lib/utils/index.d.cts +2 -9
- package/lib/utils/index.mjs +1 -1
- package/lib/utils/isWindows.mjs +3 -1
- package/lib/utils/runBash.cjs +1 -1
- package/lib/utils/runBash.mjs +1 -1
- package/lib/yarn-per-branch-lock-installer.cjs +202 -11
- package/lib/yarn-per-branch-lock-installer.mjs +24 -11
- package/lib/yarn-reinstall.cjs +6 -11
- package/lib/yarn-reinstall.mjs +1 -1
- package/package.json +35 -10
- package/readme.html +2 -2
- package/readme.md +5 -5
- package/releases/readme.md +6 -3
- 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/.opencode/package.json +0 -5
- package/lib/chunk-6S4NXESK.mjs +0 -26
- package/lib/del-ps.js +0 -32
- package/lib/del-ps.mjs +0 -43
- package/lib/ps/isWin.cjs +0 -26
- package/lib/ps/isWin.d.ts +0 -2
- package/lib/ps/isWin.js +0 -4
- package/test/package.json +0 -20
- package/test-project/package.json +0 -22
- package/test-project/workspaces/workspace-a/package.json +0 -135
- package/test-project/workspaces/workspace-a/test/demo/package.json +0 -25
- package/test-project/workspaces/workspace-b/package.json +0 -139
- package/test-project/workspaces/workspace-b/test/sample-project/package.json +0 -7
- package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/package.json +0 -96
- package/tmp/rm-node-modules-test-project/package.json +0 -17
- package/tmp/rm-node-modules-test-project/packages/workspace-a/package.json +0 -16
- package/tmp/rm-node-modules-test-project/packages/workspace-b/package.json +0 -16
- package/tmp/test-repo/package.json +0 -17
- /package/lib/{del-ps.d.ts → del-ps-cli.d.mts} +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;
|
|
@@ -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) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
require_utils
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6RK5UCTP.mjs";
|
|
6
6
|
import {
|
|
7
7
|
__commonJS,
|
|
8
8
|
__filename,
|
|
@@ -17,7 +17,7 @@ var require_submodule_install = __commonJS({
|
|
|
17
17
|
var { spawnSync } = __require("child_process");
|
|
18
18
|
var color = __require("ansi-colors");
|
|
19
19
|
var fs = __require("fs");
|
|
20
|
-
var path = __require("
|
|
20
|
+
var path = __require("upath");
|
|
21
21
|
var dotenv = __require("dotenv");
|
|
22
22
|
var envPath = path.resolve(process.cwd(), ".env");
|
|
23
23
|
if (fs.existsSync(envPath)) dotenv.config({ path: envPath, override: true, quiet: true });
|
|
@@ -37,7 +37,7 @@ var require_submodule_install = __commonJS({
|
|
|
37
37
|
console.log();
|
|
38
38
|
process.exit(0);
|
|
39
39
|
}
|
|
40
|
-
var ACCESS_TOKEN = process.env.
|
|
40
|
+
var ACCESS_TOKEN = process.env.ACCESS_TOKEN || process.env.GITHUB_TOKEN;
|
|
41
41
|
var ROOT = runGit(["rev-parse", "--show-toplevel"]).trim();
|
|
42
42
|
var REPO_PATH = ROOT;
|
|
43
43
|
if (args.cwd) {
|