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
package/binaries/ycw.cjs
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Built-in Node.js modules:
|
|
5
|
+
*
|
|
6
|
+
* - child_process:
|
|
7
|
+
* Used to launch external scripts/programs.
|
|
8
|
+
*
|
|
9
|
+
* - path:
|
|
10
|
+
* Safely handles file paths across operating systems.
|
|
11
|
+
*
|
|
12
|
+
* - fs:
|
|
13
|
+
* Used to check whether files exist.
|
|
14
|
+
*/
|
|
15
|
+
const { spawnSync } = require('child_process');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
const fs = require('fs');
|
|
18
|
+
const which = require('which');
|
|
19
|
+
const { isWindows } = require('../src/utils/isWindows.js');
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* __dirname
|
|
23
|
+
* Absolute directory path of this launcher script.
|
|
24
|
+
*
|
|
25
|
+
* __filename
|
|
26
|
+
* Absolute path of this launcher file itself.
|
|
27
|
+
*
|
|
28
|
+
* base
|
|
29
|
+
* Filename without extension.
|
|
30
|
+
*
|
|
31
|
+
* Example:
|
|
32
|
+
* File = "/tools/mytool.js"
|
|
33
|
+
*
|
|
34
|
+
* binDir = "/tools"
|
|
35
|
+
* base = "mytool"
|
|
36
|
+
*/
|
|
37
|
+
const binDir = __dirname;
|
|
38
|
+
const base = path.basename(__filename, path.extname(__filename));
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Determine which script extensions to search for
|
|
42
|
+
* based on the current operating system.
|
|
43
|
+
*
|
|
44
|
+
* Windows:
|
|
45
|
+
* .cmd
|
|
46
|
+
* .bat
|
|
47
|
+
* .ps1
|
|
48
|
+
* .vbs
|
|
49
|
+
*
|
|
50
|
+
* Linux/macOS:
|
|
51
|
+
* .sh
|
|
52
|
+
* executable file without extension
|
|
53
|
+
*/
|
|
54
|
+
const candidates = process.platform === 'win32' ? ['.cmd', '.bat', '.ps1', '.vbs'] : ['.sh', ''];
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Search for the first matching script
|
|
58
|
+
* in the same directory as this launcher.
|
|
59
|
+
*
|
|
60
|
+
* Example:
|
|
61
|
+
* If base = "mytool"
|
|
62
|
+
*
|
|
63
|
+
* Windows checks:
|
|
64
|
+
* mytool.cmd
|
|
65
|
+
* mytool.bat
|
|
66
|
+
* mytool.ps1
|
|
67
|
+
* mytool.vbs
|
|
68
|
+
*
|
|
69
|
+
* Linux/macOS checks:
|
|
70
|
+
* mytool.sh
|
|
71
|
+
* mytool
|
|
72
|
+
*/
|
|
73
|
+
let found = null;
|
|
74
|
+
|
|
75
|
+
for (const ext of candidates) {
|
|
76
|
+
const script = path.join(binDir, base + ext);
|
|
77
|
+
const exists = fs.existsSync(script);
|
|
78
|
+
// console.log(`Checking for ${script}: ${exists ? 'found' : 'not found'}`);
|
|
79
|
+
if (exists) {
|
|
80
|
+
found = script;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* If no matching script was found,
|
|
87
|
+
* try check if `bash` is available and if so, check for a .sh script.
|
|
88
|
+
*/
|
|
89
|
+
if (!found) {
|
|
90
|
+
try {
|
|
91
|
+
spawnSync('bash', ['--version'], { stdio: 'ignore' });
|
|
92
|
+
const bashScript = [path.join(binDir, base), path.join(binDir, base + '.sh')].find((script) =>
|
|
93
|
+
fs.existsSync(script)
|
|
94
|
+
);
|
|
95
|
+
if (bashScript) {
|
|
96
|
+
found = bashScript;
|
|
97
|
+
}
|
|
98
|
+
} catch {
|
|
99
|
+
// bash is not available, do nothing
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* If no matching script was found,
|
|
105
|
+
* print an error and exit with failure code 1.
|
|
106
|
+
*/
|
|
107
|
+
if (!found) {
|
|
108
|
+
console.error(`No script found for ${base} in ${binDir}`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Detect special script types
|
|
114
|
+
* that require a shell/interpreter.
|
|
115
|
+
*/
|
|
116
|
+
const isPs1 = found.endsWith('.ps1');
|
|
117
|
+
const isCmd = found.endsWith('.cmd');
|
|
118
|
+
const isUnixShell = found.endsWith('.sh') || path.extname(found) === '';
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* cmd
|
|
122
|
+
* The executable program to launch.
|
|
123
|
+
*
|
|
124
|
+
* args
|
|
125
|
+
* Arguments passed to the executable.
|
|
126
|
+
*/
|
|
127
|
+
let cmd, args;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* PowerShell scripts:
|
|
131
|
+
*
|
|
132
|
+
* Run through powershell.exe because .ps1 files
|
|
133
|
+
* are not directly executable like binaries.
|
|
134
|
+
*
|
|
135
|
+
* Flags:
|
|
136
|
+
* -NoProfile
|
|
137
|
+
* Prevent loading user profile scripts.
|
|
138
|
+
*
|
|
139
|
+
* -ExecutionPolicy Bypass
|
|
140
|
+
* Allow script execution even if policy blocks it.
|
|
141
|
+
*
|
|
142
|
+
* -File
|
|
143
|
+
* Specifies the script to execute.
|
|
144
|
+
*
|
|
145
|
+
* process.argv.slice(2)
|
|
146
|
+
* Forward all user-provided command-line arguments.
|
|
147
|
+
*/
|
|
148
|
+
if (isPs1) {
|
|
149
|
+
cmd = 'powershell.exe';
|
|
150
|
+
|
|
151
|
+
args = ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', found, ...process.argv.slice(2)];
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* CMD batch files:
|
|
155
|
+
*
|
|
156
|
+
* Run through cmd.exe using:
|
|
157
|
+
* /c
|
|
158
|
+
* which means:
|
|
159
|
+
* "execute command and terminate"
|
|
160
|
+
*/
|
|
161
|
+
} else if (isCmd) {
|
|
162
|
+
cmd = 'cmd.exe';
|
|
163
|
+
|
|
164
|
+
args = ['/c', found, ...process.argv.slice(2)];
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Other scripts:
|
|
168
|
+
*
|
|
169
|
+
* Usually:
|
|
170
|
+
* - shell scripts (.sh)
|
|
171
|
+
* - executable binaries
|
|
172
|
+
*
|
|
173
|
+
* These can be executed directly.
|
|
174
|
+
*/
|
|
175
|
+
} else if (isUnixShell) {
|
|
176
|
+
// Capture shebang scripts (no extension) and .sh scripts
|
|
177
|
+
const shebang = fs.readFileSync(found, 'utf8').split('\n')[0].trim();
|
|
178
|
+
const interpreter = shebang.startsWith('#!')
|
|
179
|
+
? shebang
|
|
180
|
+
.slice(2)
|
|
181
|
+
.trim()
|
|
182
|
+
.replace(/^\/usr\/bin\/env\s+/, '')
|
|
183
|
+
.replace(/^\/bin\/env\s+/, '')
|
|
184
|
+
.replace(/^\/usr\/bin\//, '')
|
|
185
|
+
.replace(/^\/bin\//, '')
|
|
186
|
+
: null;
|
|
187
|
+
|
|
188
|
+
if (interpreter) {
|
|
189
|
+
const resolvedOrNull = which.sync(interpreter, { nothrow: true });
|
|
190
|
+
if (!resolvedOrNull) {
|
|
191
|
+
if (['bash', 'sh'].includes(interpreter) && isWindows()) {
|
|
192
|
+
const locationsToCheck = [
|
|
193
|
+
'C:\\Program Files\\Git\\usr\\bin',
|
|
194
|
+
'C:\\Program Files\\Git\\bin',
|
|
195
|
+
'C:\\Program Files (x86)\\Git\\usr\\bin',
|
|
196
|
+
'C:\\msys64\\usr\\bin',
|
|
197
|
+
'C:\\msys64\\bin',
|
|
198
|
+
'C:\\cygwin64\\bin',
|
|
199
|
+
'C:\\cygwin\\bin',
|
|
200
|
+
'C:\\MinGW\\bin',
|
|
201
|
+
'C:\\MinGW\\msys\\1.0\\bin'
|
|
202
|
+
];
|
|
203
|
+
for (const location of locationsToCheck) {
|
|
204
|
+
const potentialPath = path.join(location, 'bash.exe');
|
|
205
|
+
if (fs.existsSync(potentialPath)) {
|
|
206
|
+
cmd = potentialPath;
|
|
207
|
+
args = [found, ...process.argv.slice(2)];
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
} else {
|
|
213
|
+
cmd = resolvedOrNull || interpreter;
|
|
214
|
+
args = [found, ...process.argv.slice(2)];
|
|
215
|
+
}
|
|
216
|
+
} else {
|
|
217
|
+
cmd = found;
|
|
218
|
+
args = process.argv.slice(2);
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
cmd = found;
|
|
222
|
+
args = process.argv.slice(2);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
console.log(
|
|
226
|
+
`Executing: ${path.isAbsolute(cmd) ? path.relative(process.cwd(), cmd) : cmd} ${args
|
|
227
|
+
.map((f) => {
|
|
228
|
+
if (path.isAbsolute(f)) return path.relative(process.cwd(), f);
|
|
229
|
+
return f;
|
|
230
|
+
})
|
|
231
|
+
.join(' ')}`
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Execute the selected script synchronously.
|
|
236
|
+
*
|
|
237
|
+
* stdio: "inherit"
|
|
238
|
+
* Shares the current terminal with the child process,
|
|
239
|
+
* so stdout/stderr/input behave normally.
|
|
240
|
+
*
|
|
241
|
+
* spawnSync waits until the child process exits.
|
|
242
|
+
*/
|
|
243
|
+
const result = spawnSync(cmd, args, {
|
|
244
|
+
stdio: 'inherit'
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Exit using the same exit code
|
|
249
|
+
* returned by the child process.
|
|
250
|
+
*
|
|
251
|
+
* If result.status is null/undefined,
|
|
252
|
+
* default to exit code 1.
|
|
253
|
+
*/
|
|
254
|
+
process.exit(result.status ?? 1);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## Binary Collections (Main Dispatcher)
|
|
2
|
+
|
|
3
|
+
The main entry point that dynamically finds and executes other scripts by name.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx --legacy-peer-deps -y binary-collections <script-name> [...args]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Subcommands
|
|
12
|
+
|
|
13
|
+
| Subcommand | Description |
|
|
14
|
+
|------------|-------------|
|
|
15
|
+
| `list` | List all available scripts |
|
|
16
|
+
| `<script-name>` | Find and execute a script by name |
|
|
17
|
+
| `-h, --help` | Show help message |
|
|
18
|
+
|
|
19
|
+
### Examples
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx --legacy-peer-deps -y binary-collections list
|
|
23
|
+
npx --legacy-peer-deps -y binary-collections git-diff -s
|
|
24
|
+
npx --legacy-peer-deps -y binary-collections del-node-modules --force
|
|
25
|
+
npx --legacy-peer-deps -y binary-collections find-node-modules
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Development
|
|
29
|
+
|
|
30
|
+
When developing locally, use `bc <commandName>` (`bin/bc` on Unix or `bin/bc.cmd` on Windows). Its usage is the same as `binary-collections <commandName>`.
|
|
31
|
+
|
|
32
|
+
### Source
|
|
33
|
+
|
|
34
|
+
See [`src/binary-collections.cjs`](../src/binary-collections.cjs) & [`bin/bc`](../bin/bc)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## Changelog Generator
|
|
2
|
+
|
|
3
|
+
Generates a `CHANGELOG.md` file from git commit history, grouped by version bumps.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
changelog
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Description
|
|
12
|
+
|
|
13
|
+
- Analyzes git commit history looking for version bumps
|
|
14
|
+
- Groups commits by version
|
|
15
|
+
- Skips dependabot and irrelevant commits
|
|
16
|
+
- Outputs the original git log to `tmp/original.md` for reference
|
|
17
|
+
|
|
18
|
+
### Options
|
|
19
|
+
|
|
20
|
+
| Option | Description |
|
|
21
|
+
|--------|-------------|
|
|
22
|
+
| `-h, --help` | Show help message |
|
|
23
|
+
|
|
24
|
+
### Source
|
|
25
|
+
|
|
26
|
+
See [`src/changelog.cjs`](../src/changelog.cjs)
|
|
@@ -10,17 +10,106 @@ npx --yes binary-collections@https://raw.githubusercontent.com/dimaslanjaka/bin/
|
|
|
10
10
|
|
|
11
11
|
# use yarn dlx
|
|
12
12
|
yarn dlx binary-collections@https://raw.githubusercontent.com/dimaslanjaka/bin/master/releases/bin.tgz clean-github-actions-caches
|
|
13
|
+
|
|
14
|
+
# keep the first 3 cache key segments as the grouping prefix
|
|
15
|
+
clean-github-actions-caches --prefix-depth 3
|
|
13
16
|
```
|
|
14
17
|
|
|
18
|
+
### Aliases
|
|
19
|
+
|
|
20
|
+
This command is available under several aliases (all invoke the same CLI):
|
|
21
|
+
|
|
22
|
+
- `clean-github-actions-cache`
|
|
23
|
+
- `clear-github-actions-cache`
|
|
24
|
+
- `clear-github-actions-caches`
|
|
25
|
+
- `clear-gh-caches`
|
|
26
|
+
|
|
27
|
+
|
|
15
28
|
### Features
|
|
16
29
|
- Authenticates using `ACCESS_TOKEN` or `GITHUB_TOKEN` from your `.env` file
|
|
17
|
-
- Groups caches by
|
|
30
|
+
- Groups caches by the first N key segments split on `-` or `_` and deletes all but the latest for each group
|
|
18
31
|
- Operates on the current repository (origin remote) and matches the working directory of your terminal
|
|
19
32
|
- Safe: Only deletes caches older than the most recent per prefix
|
|
33
|
+
- Accepts `--repo owner/repo` to target a specific repository and `--prefix-depth <n>` to control grouping
|
|
20
34
|
|
|
21
35
|
### Environment Setup
|
|
22
36
|
1. Add `ACCESS_TOKEN` or `GITHUB_TOKEN` to your `.env` file
|
|
23
37
|
2. Ensure you have access to the repository's cache management
|
|
24
38
|
|
|
25
39
|
### Source
|
|
26
|
-
See [`src/clean-github-actions-caches.cjs`](../src/clean-github-actions-caches.cjs)
|
|
40
|
+
See [`src/clean-github-actions-caches.cjs`](../src/clean-github-actions-caches.cjs) & [`src/clean-github-actions-caches-cli.cjs`](../src/clean-github-actions-caches-cli.cjs)
|
|
41
|
+
|
|
42
|
+
### Github CI Examples
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
name: Clean GitHub Actions Cache
|
|
46
|
+
|
|
47
|
+
on:
|
|
48
|
+
# Trigger this workflow when the specified workflows complete (e.g., after build and test workflows)
|
|
49
|
+
workflow_run:
|
|
50
|
+
workflows:
|
|
51
|
+
- Node.js Package Build
|
|
52
|
+
- Node.js Package Test
|
|
53
|
+
types:
|
|
54
|
+
- completed
|
|
55
|
+
|
|
56
|
+
# Allow manual triggering of this workflow from the GitHub Actions UI
|
|
57
|
+
workflow_dispatch:
|
|
58
|
+
|
|
59
|
+
# Uncomment the following lines to enable scheduled cache cleaning (e.g., every hour)
|
|
60
|
+
# schedule:
|
|
61
|
+
# - cron: '0 * * * *'
|
|
62
|
+
|
|
63
|
+
# Uncomment the following lines to enable cache cleaning on pushes to the master branch
|
|
64
|
+
# push:
|
|
65
|
+
# branches:
|
|
66
|
+
# - master
|
|
67
|
+
|
|
68
|
+
# Allow this workflow to be called by other workflows, passing the ACCESS_TOKEN secret
|
|
69
|
+
workflow_call:
|
|
70
|
+
secrets:
|
|
71
|
+
ACCESS_TOKEN:
|
|
72
|
+
required: true
|
|
73
|
+
|
|
74
|
+
concurrency:
|
|
75
|
+
group: clean-cache
|
|
76
|
+
cancel-in-progress: true
|
|
77
|
+
|
|
78
|
+
jobs:
|
|
79
|
+
clean-cache:
|
|
80
|
+
# if: contains(github.repository, 'php-proxy-hunter')
|
|
81
|
+
runs-on: windows-latest
|
|
82
|
+
|
|
83
|
+
env:
|
|
84
|
+
PIP_CACHE_DIR: "${{ github.workspace }}/project/tmp/pip"
|
|
85
|
+
NUITKA_CACHE_DIR: "${{ github.workspace }}/project/tmp/nuitka-cache"
|
|
86
|
+
NODE_OPTIONS: "--max_old_space_size=4096"
|
|
87
|
+
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
|
88
|
+
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
|
89
|
+
GH_TOKEN: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
|
90
|
+
YARN_CHECKSUM_BEHAVIOR: update
|
|
91
|
+
|
|
92
|
+
steps:
|
|
93
|
+
- name: 📥 Checkout Repository
|
|
94
|
+
uses: actions/checkout@v6
|
|
95
|
+
with:
|
|
96
|
+
token: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
|
97
|
+
|
|
98
|
+
- name: 🐍 Setup Python
|
|
99
|
+
uses: actions/setup-python@v6
|
|
100
|
+
with:
|
|
101
|
+
python-version: "3.11"
|
|
102
|
+
architecture: "x64"
|
|
103
|
+
|
|
104
|
+
- name: 🟢 Setup Node.js
|
|
105
|
+
uses: actions/setup-node@v6
|
|
106
|
+
with:
|
|
107
|
+
node-version: 20.x
|
|
108
|
+
|
|
109
|
+
- name: 🧹 Clean GitHub Actions Cache ${{ github.event.workflow_run.head_sha }}
|
|
110
|
+
env:
|
|
111
|
+
GH_TOKEN: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
|
|
112
|
+
run: |
|
|
113
|
+
npx --legacy-peer-deps -y binary-collections@https://raw.githubusercontent.com/dimaslanjaka/bin/master/releases/bin.tgz clean-github-actions-caches --repo ${{ github.repository }} --sha ${{ github.event.workflow_run.head_sha }}
|
|
114
|
+
shell: bash
|
|
115
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
## Copy & Move File
|
|
2
|
+
|
|
3
|
+
Copies or moves files/directories via CLI.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
copy <src> <dest>
|
|
9
|
+
move <src> <dest>
|
|
10
|
+
````
|
|
11
|
+
|
|
12
|
+
### Behavior
|
|
13
|
+
|
|
14
|
+
* If `src` is a **file** and `dest` is a **directory**, the file will be placed inside that directory using its original filename.
|
|
15
|
+
* If `src` is a **file** and `dest` is a **file path**, it will be copied/moved directly to that path.
|
|
16
|
+
* If `src` is a **directory**, the entire directory will be copied/moved into the destination.
|
|
17
|
+
|
|
18
|
+
### Aliases
|
|
19
|
+
|
|
20
|
+
The copy command is available under several aliases (all invoke the same CLI):
|
|
21
|
+
|
|
22
|
+
* `copy` (default)
|
|
23
|
+
* `node-copy`
|
|
24
|
+
* `copy-file`
|
|
25
|
+
|
|
26
|
+
The move command is available under several aliases (all invoke the same CLI):
|
|
27
|
+
|
|
28
|
+
* `move` (default)
|
|
29
|
+
* `node-move`
|
|
30
|
+
* `move-file`
|
|
31
|
+
|
|
32
|
+
### Options
|
|
33
|
+
|
|
34
|
+
| Option | Description |
|
|
35
|
+
| ------------ | ----------------- |
|
|
36
|
+
| `-h, --help` | Show help message |
|
|
37
|
+
|
|
38
|
+
### Examples
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# file → file
|
|
42
|
+
copy file.txt backup/file.txt
|
|
43
|
+
move file.txt backup/file.txt
|
|
44
|
+
|
|
45
|
+
# file → directory (auto-append filename)
|
|
46
|
+
copy file.txt backup/
|
|
47
|
+
move file.txt backup/
|
|
48
|
+
|
|
49
|
+
# directory → directory
|
|
50
|
+
copy ./src ./dist
|
|
51
|
+
move ./src ./dist
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Source
|
|
55
|
+
|
|
56
|
+
See [`src/file/copy-cli.mjs`](../src/file/copy-cli.mjs),
|
|
57
|
+
[`src/file/copy.mjs`](../src/file/copy.mjs),
|
|
58
|
+
[`src/file/move-cli.mjs`](../src/file/move-cli.mjs),
|
|
59
|
+
[`src/file/move.mjs`](../src/file/move.mjs)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Gradle Build Cleaner
|
|
2
|
+
|
|
3
|
+
Deletes Gradle `build/` directories.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
del-gradle
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Description
|
|
12
|
+
|
|
13
|
+
Searches for `build.gradle` files and deletes the adjacent `build/` directories, ignoring `node_modules` and `vendor` directories.
|
|
14
|
+
|
|
15
|
+
### Source
|
|
16
|
+
|
|
17
|
+
See [`src/del-gradle.js`](../src/del-gradle.js)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Process Management
|
|
2
|
+
|
|
3
|
+
Terminate processes quickly by name or type across platforms.
|
|
4
|
+
|
|
5
|
+
### Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `del-ps <process-name>` | Kill processes by command name (cross-platform) |
|
|
10
|
+
| `kill-process <name>` | Kill process by name (Unix `killall`) |
|
|
11
|
+
| `nodekill` | Kill all Node.js processes |
|
|
12
|
+
| `javakill` | Kill all Java processes (Windows `taskkill`) |
|
|
13
|
+
|
|
14
|
+
### Usage
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Kill processes by name
|
|
18
|
+
del-ps <process-name>
|
|
19
|
+
|
|
20
|
+
# Kill specific types
|
|
21
|
+
kill-process <name> # Unix: uses killall
|
|
22
|
+
nodekill # Kill all node.exe processes
|
|
23
|
+
javakill # Kill all java.exe processes (Windows)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Source
|
|
27
|
+
|
|
28
|
+
See [`src/del-ps.js`](../src/del-ps.js) and shell wrappers in [`bin/`](../bin/)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Downloader
|
|
2
|
+
|
|
3
|
+
Downloads files from URLs over HTTP/HTTPS to the local filesystem. Uses `axios` with streaming to efficiently write downloaded content directly to disk, and supports up to 10 redirects.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
downloader <url> [output-path]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Aliases
|
|
12
|
+
|
|
13
|
+
This command is available under several aliases (all invoke the same CLI):
|
|
14
|
+
|
|
15
|
+
- `downloader` (default)
|
|
16
|
+
- `download`
|
|
17
|
+
- `download-file`
|
|
18
|
+
- `file-downloader`
|
|
19
|
+
- `fetch-file`
|
|
20
|
+
|
|
21
|
+
### Arguments
|
|
22
|
+
|
|
23
|
+
| Argument | Description |
|
|
24
|
+
| :------------ | :-------------------------------------- |
|
|
25
|
+
| `url` | File URL to download (required) |
|
|
26
|
+
| `output-path` | Optional destination path on disk |
|
|
27
|
+
|
|
28
|
+
### Options
|
|
29
|
+
|
|
30
|
+
| Flag | Description |
|
|
31
|
+
| :------------- | :---------------- |
|
|
32
|
+
| `-h`, `--help` | Show help message |
|
|
33
|
+
|
|
34
|
+
### Behavior
|
|
35
|
+
|
|
36
|
+
- If no `output-path` is provided, the filename is derived from the URL's pathname (e.g., `https://example.com/file.zip` saves as `file.zip` in the current directory).
|
|
37
|
+
- If the URL path ends with `/` or has no filename segment, the default name `downloaded-file` is used.
|
|
38
|
+
- The output path is resolved to an absolute path, and any missing parent directories are created automatically.
|
|
39
|
+
|
|
40
|
+
### Examples
|
|
41
|
+
|
|
42
|
+
Download to the current directory (filename auto-derived from URL):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
downloader https://example.com/file.zip
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Download and save with a custom filename:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
downloader https://example.com/file.zip downloads/custom.zip
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Using an alias:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
fetch-file https://example.com/data.json ./data/input.json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Source
|
|
61
|
+
|
|
62
|
+
See [`src/downloader-cli.cjs`](../src/downloader-cli.cjs).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## Environment Helpers
|
|
2
|
+
|
|
3
|
+
Set `NODE_ENV` and run a command in the configured environment.
|
|
4
|
+
|
|
5
|
+
### Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `dev <command>` | Sets `NODE_ENV=development` and runs the command |
|
|
10
|
+
| `prod <command>` | Sets `NODE_ENV=production` and runs the command |
|
|
11
|
+
| `empty` | No-op utility placeholder |
|
|
12
|
+
|
|
13
|
+
### Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
dev <command> [args...]
|
|
17
|
+
prod <command> [args...]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Examples
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
dev node server.js
|
|
24
|
+
prod npm start
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Source
|
|
28
|
+
|
|
29
|
+
See [`bin/dev`](../bin/dev) & [`bin/prod`](../bin/prod)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Find Node Modules
|
|
2
|
+
|
|
3
|
+
Locates all `node_modules` directories within a project.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
find-node-modules
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Description
|
|
12
|
+
|
|
13
|
+
Finds and prints all `node_modules` directories under the current working directory.
|
|
14
|
+
|
|
15
|
+
### Source
|
|
16
|
+
|
|
17
|
+
See [`src/find-node-modules.cjs`](../src/find-node-modules.cjs) & [`src/find-node-modules-cli.js`](../src/find-node-modules-cli.js)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## Git Diff Utility
|
|
2
|
+
|
|
3
|
+
Enhanced diff functionality for repository inspection. Saves diffs to temp files and optionally generates conventional commit prompts.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git-diff [options] [file]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Options
|
|
12
|
+
|
|
13
|
+
| Option | Description |
|
|
14
|
+
|--------|-------------|
|
|
15
|
+
| `-h, --help` | Show help message |
|
|
16
|
+
| `-s, -S, --staged-only` | Show all staged diffs |
|
|
17
|
+
| `-u, --unstaged <file>` | Show unstaged diff for a specific file |
|
|
18
|
+
| `-u, --unstaged` | Show all unstaged diffs |
|
|
19
|
+
| `--ai` | Generate commit message with ChatGPT |
|
|
20
|
+
|
|
21
|
+
### Examples
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git-diff FILE # Show staged diff of a file
|
|
25
|
+
git-diff --staged-only # Show all staged diffs
|
|
26
|
+
git-diff --unstaged FILE # Show unstaged diff of a file
|
|
27
|
+
git-diff --unstaged # Show all unstaged diffs
|
|
28
|
+
git-diff --ai # Generate commit message with ChatGPT
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Source
|
|
32
|
+
|
|
33
|
+
See [`src/git-diff.js`](../src/git-diff.js) & [`src/git-diff-cli.js`](../src/git-diff-cli.js)
|