binary-collections 2.0.12 → 2.0.14
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 +307 -162
- package/binaries/clean-nodemodule.cjs +307 -162
- package/binaries/clean-nodemodules.cjs +307 -162
- package/binaries/composer.cjs +323 -0
- package/binaries/composer.cmd +2 -0
- package/binaries/composer.phar +0 -0
- package/binaries/dev.cjs +307 -162
- package/binaries/empty.cjs +307 -162
- package/binaries/git-reduce-size.cjs +307 -162
- package/binaries/javakill.cjs +307 -162
- package/binaries/kill-process.cjs +307 -162
- package/binaries/nodekill.cjs +307 -162
- package/binaries/prod.cjs +307 -162
- package/binaries/py.cjs +307 -162
- package/binaries/rmfind.cjs +307 -162
- package/binaries/rmx.cjs +307 -162
- package/binaries/submodule-token.cjs +307 -162
- package/binaries/test-cjs.cjs +307 -162
- package/binaries/test-esm.cjs +307 -162
- package/binaries/yarn-clean.cjs +307 -162
- package/binaries/yc +22 -1
- package/binaries/yc.cjs +307 -162
- package/binaries/ycw +256 -0
- package/binaries/ycw.cjs +323 -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 +56 -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/generate-test-ci.md +56 -0
- package/docs-src/get-latest-workflow-status.md +100 -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/opencode-cli.md +127 -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/upload-backend.md +29 -0
- package/docs-src/vscode-cli.md +84 -0
- package/docs-src/workflow-badge.md +120 -0
- package/docs-src/yarn-install.md +31 -0
- package/docs-src/yarn-reinstall.md +27 -0
- package/lib/binary-collections/config.cjs +15 -3
- package/lib/binary-collections/config.d.cts +10 -0
- package/lib/binary-collections/config.mjs +2 -2
- package/lib/binary-collections/findScript.cjs +75 -28
- package/lib/binary-collections/findScript.mjs +2 -2
- package/lib/binary-collections/listScript.cjs +75 -28
- package/lib/binary-collections/listScript.mjs +2 -2
- package/lib/binary-collections.cjs +85 -43
- package/lib/binary-collections.mjs +8 -8
- package/lib/changelog.cjs +7 -12
- package/lib/changelog.mjs +2 -2
- package/lib/chunk-2SJKVOTN.mjs +146 -0
- package/lib/{chunk-SPTECFE5.mjs → chunk-3F6EIHYG.mjs} +87 -21
- package/lib/chunk-546KAIYT.mjs +113 -0
- package/lib/chunk-56BVU63B.mjs +86 -0
- package/lib/chunk-5WAOOOGZ.mjs +77 -0
- package/lib/{chunk-V2IBPCEV.mjs → chunk-6C7KTYGZ.mjs} +3 -1
- package/lib/{chunk-5RTXZVCW.mjs → chunk-6RK5UCTP.mjs} +5 -10
- package/lib/chunk-72XTQ3CK.mjs +45 -0
- package/lib/chunk-7N52Z4IJ.mjs +39 -0
- package/lib/chunk-7Q6YEUQF.mjs +246 -0
- package/lib/{chunk-ZOWVMII3.mjs → chunk-AJ3OIYYP.mjs} +75 -28
- package/lib/chunk-AQZ7LMFS.mjs +100 -0
- package/lib/chunk-BDCMTOZI.mjs +246 -0
- package/lib/chunk-BEUM4LH4.mjs +184 -0
- package/lib/{chunk-66KDU4TX.mjs → chunk-BO4TZS4Q.mjs} +39 -61
- package/lib/chunk-CM3IC5YC.mjs +226 -0
- package/lib/{chunk-6PU7BAHB.mjs → chunk-D42YBRZW.mjs} +1 -1
- package/lib/chunk-FR3DMHJC.mjs +146 -0
- package/lib/chunk-I3O5ZRYU.mjs +77 -0
- package/lib/chunk-J4M5EL5P.mjs +108 -0
- package/lib/chunk-JK3MG2KF.mjs +236 -0
- package/lib/chunk-JMUFQSPE.mjs +184 -0
- package/lib/chunk-JVMLKHD2.mjs +62 -0
- package/lib/chunk-KAT2JNLZ.mjs +146 -0
- package/lib/chunk-KLKAIFKI.mjs +40 -0
- package/lib/{chunk-FB2WKVJD.mjs → chunk-KRCPFWIF.mjs} +72 -37
- package/lib/chunk-LACQTD5V.mjs +225 -0
- package/lib/chunk-LVSPEFU2.mjs +86 -0
- package/lib/chunk-MCCMMZSM.mjs +60 -0
- package/lib/{chunk-2LSRSEXF.mjs → chunk-MGPYPKIE.mjs} +2 -2
- package/lib/chunk-OA2RKEY3.mjs +162 -0
- package/lib/{chunk-C6D2TTYU.mjs → chunk-OBXLTXFJ.mjs} +4 -2
- package/lib/{chunk-G5UUEWUO.mjs → chunk-PAZH45HS.mjs} +8 -2
- package/lib/chunk-QD4T255Z.mjs +40 -0
- package/lib/{chunk-XPJGCDOD.mjs → chunk-QII2EKCS.mjs} +14 -2
- package/lib/chunk-QZMGBDSA.mjs +32 -0
- package/lib/chunk-RDGDLSPD.mjs +76 -0
- package/lib/chunk-RJKTSUAX.mjs +123 -0
- package/lib/chunk-RKPIBGKE.mjs +61 -0
- package/lib/chunk-SARIXFHP.mjs +44 -0
- package/lib/chunk-SJYP66BO.mjs +62 -0
- package/lib/chunk-SWUAEY4H.mjs +44 -0
- package/lib/chunk-TP3O2JGW.mjs +88 -0
- package/lib/chunk-UAIF5VIA.mjs +89 -0
- package/lib/chunk-UDZBVKXH.mjs +94 -0
- package/lib/chunk-UEOWRYAN.mjs +32 -0
- package/lib/chunk-UHPFLJXH.mjs +227 -0
- package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
- package/lib/chunk-UYNBNLV5.mjs +113 -0
- package/lib/chunk-WOC4FZ6F.mjs +164 -0
- package/lib/chunk-WSHVPGNM.mjs +44 -0
- package/lib/chunk-X7UVQ6ZC.mjs +183 -0
- package/lib/{chunk-NCZPTKDV.mjs → chunk-XI67TI46.mjs} +1 -1
- package/lib/chunk-XW5NZAKI.mjs +82 -0
- package/lib/chunk-YLV4QATP.mjs +86 -0
- package/lib/chunk-YWSLMAQ7.mjs +65 -0
- package/lib/chunk-ZB4IQ6VJ.mjs +46 -0
- 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 +5 -5
- package/lib/cross-env/variable.mjs +2 -2
- package/lib/del-gradle.cjs +7 -12
- package/lib/del-gradle.mjs +23 -17
- package/lib/del-node-modules.cjs +186 -4
- package/lib/del-node-modules.mjs +151 -142
- 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.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 +2 -2
- package/lib/find-node-modules-cli.mjs +11 -5
- 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-diff-cli.cjs → git/git-diff-cli.cjs} +109 -36
- package/lib/{git-diff-cli.mjs → git/git-diff-cli.mjs} +7 -7
- package/lib/{git-diff.cjs → git/git-diff.cjs} +107 -34
- package/lib/{git-diff.js → git/git-diff.js} +88 -31
- package/lib/{git-diff.mjs → git/git-diff.mjs} +6 -6
- package/lib/{git-fix.cjs → git/git-fix.cjs} +140 -14
- package/lib/git/git-fix.d.cts +2 -0
- package/lib/{git-fix.mjs → git/git-fix.mjs} +19 -14
- package/lib/{git-purge.cjs → git/git-purge.cjs} +8 -13
- package/lib/{git-purge.mjs → git/git-purge.mjs} +5 -5
- package/lib/git/user-config.cjs +137 -12
- package/lib/git/user-config.mjs +4 -2
- package/lib/{clean-github-actions-caches-cli.cjs → github-workflows/clean-github-actions-caches-cli.cjs} +292 -222
- package/lib/{clean-github-actions-caches-cli.mjs → github-workflows/clean-github-actions-caches-cli.mjs} +30 -11
- package/lib/github-workflows/clean-github-actions-caches.cjs +473 -0
- package/lib/github-workflows/clean-github-actions-caches.d.cts +53 -0
- package/lib/{clean-github-actions-caches.mjs → github-workflows/clean-github-actions-caches.mjs} +5 -3
- package/lib/github-workflows/generate-test-ci-step-cli.cjs +240 -0
- package/lib/github-workflows/generate-test-ci-step-cli.d.mts +2 -0
- package/lib/github-workflows/generate-test-ci-step-cli.mjs +132 -0
- package/lib/github-workflows/get-latest-workflow-status-cli.cjs +541 -0
- package/lib/github-workflows/get-latest-workflow-status-cli.d.mts +2 -0
- package/lib/github-workflows/get-latest-workflow-status-cli.mjs +61 -0
- package/lib/github-workflows/get-latest-workflow-status.cjs +56 -0
- package/lib/github-workflows/get-latest-workflow-status.d.mts +1 -0
- package/lib/{ps/isWin.mjs → github-workflows/get-latest-workflow-status.mjs} +3 -5
- package/lib/github-workflows/utils.cjs +271 -0
- package/lib/github-workflows/utils.d.cts +76 -0
- package/lib/github-workflows/utils.mjs +8 -0
- package/lib/github-workflows/workflow-badge-cli.cjs +722 -0
- package/lib/github-workflows/workflow-badge-cli.d.mts +2 -0
- package/lib/github-workflows/workflow-badge-cli.mjs +98 -0
- package/lib/github-workflows/workflow-badge-generator.cjs +200 -0
- package/lib/github-workflows/workflow-badge-generator.d.mts +14 -0
- package/lib/github-workflows/workflow-badge-generator.mjs +8 -0
- package/lib/github-workflows/workflow-test-data.cjs +73 -0
- package/lib/github-workflows/workflow-test-data.d.cts +63 -0
- package/lib/github-workflows/workflow-test-data.mjs +6 -0
- 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/opencode/cli/auth-rotate.cjs +143 -0
- package/lib/opencode/cli/auth-rotate.d.ts +1 -0
- package/lib/opencode/cli/auth-rotate.js +70 -0
- package/lib/opencode/cli/auth-rotate.mjs +10 -0
- package/lib/opencode/cli/list-projects.cjs +184 -0
- package/lib/opencode/cli/list-projects.d.ts +1 -0
- package/lib/opencode/cli/list-projects.js +32 -0
- package/lib/opencode/cli/list-projects.mjs +11 -0
- package/lib/opencode/cli/list-sessions.cjs +215 -0
- package/lib/opencode/cli/list-sessions.d.ts +1 -0
- package/lib/opencode/cli/list-sessions.js +45 -0
- package/lib/opencode/cli/list-sessions.mjs +11 -0
- package/lib/opencode/database.cjs +349 -0
- package/lib/opencode/database.d.ts +91 -0
- package/lib/opencode/database.js +252 -0
- package/lib/opencode/database.mjs +28 -0
- package/lib/opencode/database.runner.cjs +145 -0
- package/lib/opencode/database.runner.d.ts +1 -0
- package/lib/opencode/database.runner.js +56 -0
- package/lib/opencode/database.runner.mjs +37 -0
- package/lib/opencode/opencode-zen.runner.cjs +48 -0
- package/lib/opencode/opencode-zen.runner.d.mts +1 -0
- package/lib/opencode/opencode-zen.runner.mjs +31 -0
- package/lib/opencode/sqlite.cjs +114 -0
- package/lib/opencode/sqlite.d.ts +18 -0
- package/lib/opencode/sqlite.js +82 -0
- package/lib/opencode/sqlite.mjs +10 -0
- package/lib/opencode/storage.cjs +124 -0
- package/lib/opencode/storage.d.ts +27 -0
- package/lib/opencode/storage.js +101 -0
- package/lib/opencode/storage.mjs +38 -0
- package/lib/opencode/storage.runner.cjs +50 -0
- package/lib/opencode/storage.runner.d.ts +1 -0
- package/lib/opencode/storage.runner.js +13 -0
- package/lib/opencode/storage.runner.mjs +29 -0
- package/lib/{ps/isWin.cjs → opencode/types.cjs} +3 -12
- package/lib/opencode/types.d.ts +31 -0
- package/lib/{ps/isWin.js → opencode/types.js} +0 -2
- package/lib/opencode/types.mjs +7 -0
- package/lib/opencode/utils/check-api.cjs +59 -0
- package/lib/opencode/utils/check-api.d.ts +12 -0
- package/lib/opencode/utils/check-api.js +46 -0
- package/lib/opencode/utils/check-api.mjs +8 -0
- package/lib/opencode-cli.cjs +473 -0
- package/lib/opencode-cli.d.ts +2 -0
- package/lib/opencode-cli.js +115 -0
- package/lib/opencode-cli.mjs +111 -0
- package/lib/package-resolutions-updater-cli.cjs +218 -194
- package/lib/package-resolutions-updater-cli.mjs +6 -4
- package/lib/package-resolutions-updater.cjs +216 -192
- package/lib/package-resolutions-updater.d.mts +44 -1
- package/lib/package-resolutions-updater.mjs +5 -3
- package/lib/php-cs-fixer-staged.cjs +1 -1
- package/lib/php-cs-fixer-staged.mjs +1 -1
- package/lib/print-directory-tree.cjs +147 -21
- package/lib/print-directory-tree.mjs +17 -11
- 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 +411 -0
- package/lib/rmpath-cli.d.mts +1 -0
- package/lib/rmpath-cli.mjs +25 -0
- package/lib/rmpath.cjs +113 -188
- package/lib/rmpath.mjs +7 -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 +88 -0
- package/lib/run-by-checksum/hash.d.ts +17 -0
- package/lib/run-by-checksum/hash.js +119 -0
- package/lib/run-by-checksum/hash.mjs +10 -0
- package/lib/run-by-checksum/run.cjs +185 -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 +398 -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 +137 -16
- package/lib/submodule-install.mjs +7 -6
- package/lib/submodule-remove-cli.cjs +300 -7
- package/lib/submodule-remove-cli.js +2 -2
- package/lib/submodule-remove-cli.mjs +8 -3
- package/lib/submodule-remove.cjs +146 -5
- package/lib/submodule-remove.mjs +3 -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 +3 -0
- package/lib/utils/findEnvFiles.d.cts +2 -2
- package/lib/utils/findEnvFiles.mjs +1 -1
- 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/vscode/project.cjs +0 -0
- package/lib/vscode/project.d.ts +0 -0
- package/lib/vscode/project.js +1 -0
- package/lib/vscode/project.mjs +7 -0
- package/lib/vscode/storage.cjs +138 -0
- package/lib/vscode/storage.d.ts +51 -0
- package/lib/vscode/storage.js +169 -0
- package/lib/vscode/storage.mjs +42 -0
- package/lib/vscode/storage.runner.cjs +125 -0
- package/lib/vscode/storage.runner.d.ts +1 -0
- package/lib/vscode/storage.runner.js +47 -0
- package/lib/vscode/storage.runner.mjs +60 -0
- package/lib/vscode-cli.cjs +155 -0
- package/lib/vscode-cli.d.ts +2 -0
- package/lib/vscode-cli.js +80 -0
- package/lib/vscode-cli.mjs +71 -0
- 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 +75 -28
- package/readme.html +2 -2
- package/readme.md +44 -11
- package/releases/readme.md +6 -3
- package/src/github-workflows/generate-test-ci-step-cli.mjs +126 -0
- 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/vendor/clue/ndjson-react/README.md +365 -0
- package/vendor/composer/pcre/README.md +189 -0
- package/vendor/composer/semver/README.md +99 -0
- package/vendor/composer/xdebug-handler/README.md +305 -0
- package/vendor/ergebnis/agent-detector/README.md +107 -0
- package/vendor/evenement/evenement/README.md +64 -0
- package/vendor/fidry/cpu-core-counter/README.md +138 -0
- package/vendor/friendsofphp/php-cs-fixer/README.md +97 -0
- package/vendor/psr/container/README.md +13 -0
- package/vendor/psr/event-dispatcher/README.md +6 -0
- package/vendor/psr/log/README.md +58 -0
- package/vendor/react/cache/README.md +367 -0
- package/vendor/react/child-process/README.md +619 -0
- package/vendor/react/dns/README.md +453 -0
- package/vendor/react/event-loop/README.md +930 -0
- package/vendor/react/promise/README.md +722 -0
- package/vendor/react/socket/README.md +1564 -0
- package/vendor/react/stream/README.md +1249 -0
- package/vendor/sebastian/diff/README.md +151 -0
- package/vendor/symfony/console/README.md +30 -0
- package/vendor/symfony/deprecation-contracts/README.md +26 -0
- package/vendor/symfony/event-dispatcher/README.md +25 -0
- package/vendor/symfony/event-dispatcher-contracts/README.md +9 -0
- package/vendor/symfony/filesystem/README.md +23 -0
- package/vendor/symfony/finder/README.md +24 -0
- package/vendor/symfony/options-resolver/README.md +25 -0
- package/vendor/symfony/polyfill-ctype/README.md +12 -0
- package/vendor/symfony/polyfill-intl-grapheme/README.md +32 -0
- package/vendor/symfony/polyfill-intl-normalizer/README.md +14 -0
- package/vendor/symfony/polyfill-mbstring/README.md +13 -0
- package/vendor/symfony/polyfill-php80/README.md +25 -0
- package/vendor/symfony/polyfill-php81/README.md +18 -0
- package/vendor/symfony/polyfill-php84/README.md +23 -0
- package/vendor/symfony/polyfill-php85/README.md +20 -0
- package/vendor/symfony/process/README.md +23 -0
- package/vendor/symfony/service-contracts/README.md +9 -0
- package/vendor/symfony/stopwatch/README.md +52 -0
- package/vendor/symfony/string/README.md +24 -0
- package/.opencode/package.json +0 -5
- package/lib/chunk-6S4NXESK.mjs +0 -26
- package/lib/clean-github-actions-caches.cjs +0 -249
- package/lib/clean-github-actions-caches.d.cts +0 -15
- package/lib/del-gradle.js +0 -16
- package/lib/del-node-modules.js +0 -211
- package/lib/del-ps.js +0 -32
- package/lib/del-ps.mjs +0 -43
- package/lib/find-node-modules-cli.js +0 -4
- package/lib/ps/isWin.d.ts +0 -2
- 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/{clean-github-actions-caches-cli.d.cts → del-gradle.d.cts} +0 -0
- /package/lib/{del-gradle.d.ts → del-node-modules.d.cts} +0 -0
- /package/lib/{del-node-modules.d.ts → del-ps-cli.d.mts} +0 -0
- /package/lib/{find-node-modules-cli.d.ts → downloader-cli.d.cts} +0 -0
- /package/lib/{git-diff-cli.d.ts → find-node-modules-cli.d.cts} +0 -0
- /package/lib/{git-fix.d.cts → git/git-diff-cli.d.ts} +0 -0
- /package/lib/{git-diff-cli.js → git/git-diff-cli.js} +0 -0
- /package/lib/{git-diff.d.ts → git/git-diff.d.ts} +0 -0
- /package/lib/{git-purge.d.cts → git/git-purge.d.cts} +0 -0
- /package/lib/{del-ps.d.ts → github-workflows/clean-github-actions-caches-cli.d.cts} +0 -0
package/binaries/ycw
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -u
|
|
3
|
+
|
|
4
|
+
cwd="$(pwd)"
|
|
5
|
+
max_jobs=4
|
|
6
|
+
|
|
7
|
+
usage() {
|
|
8
|
+
cat <<'EOF'
|
|
9
|
+
Usage: ycw [options]
|
|
10
|
+
|
|
11
|
+
Clean node_modules directories across a Yarn monorepo (workspaces-aware).
|
|
12
|
+
|
|
13
|
+
This tool:
|
|
14
|
+
- Automatically detects monorepo root via package.json "workspaces"
|
|
15
|
+
- Expands workspace globs (e.g. packages/*)
|
|
16
|
+
- Removes node_modules in root + all workspace packages
|
|
17
|
+
- Runs partial cleanup in parallel for speed
|
|
18
|
+
|
|
19
|
+
Options:
|
|
20
|
+
-h, --help Show this help message and exit
|
|
21
|
+
-c, --concurrent <num> Maximum parallel jobs (default: 4)
|
|
22
|
+
|
|
23
|
+
Behavior:
|
|
24
|
+
• Root is detected by scanning upward for package.json with "workspaces"
|
|
25
|
+
• Workspace patterns are read from package.json (no jq required)
|
|
26
|
+
• node_modules folders are removed in two phases:
|
|
27
|
+
1. Partial cleanup (letter-based parallel deletion)
|
|
28
|
+
2. Final full removal of remaining node_modules directories
|
|
29
|
+
|
|
30
|
+
Notes:
|
|
31
|
+
- Designed for Yarn workspaces monorepos
|
|
32
|
+
- Safe fallback: if no root is detected, current directory is used
|
|
33
|
+
- Uses rm -rf (destructive operation)
|
|
34
|
+
|
|
35
|
+
Example:
|
|
36
|
+
ycw
|
|
37
|
+
ycw --help
|
|
38
|
+
ycw -c 8
|
|
39
|
+
|
|
40
|
+
EOF
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
while [[ $# -gt 0 ]]; do
|
|
44
|
+
case "$1" in
|
|
45
|
+
-h|--help) usage; exit 0 ;;
|
|
46
|
+
-c|--concurrent) max_jobs="$2"; shift 2 ;;
|
|
47
|
+
*) shift ;;
|
|
48
|
+
esac
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
# colors
|
|
52
|
+
GREEN='\033[0;32m'
|
|
53
|
+
RED='\033[0;31m'
|
|
54
|
+
GRAY='\033[0;90m'
|
|
55
|
+
BLUE='\033[0;34m'
|
|
56
|
+
NC='\033[0m'
|
|
57
|
+
|
|
58
|
+
timestamp() {
|
|
59
|
+
date "+%Y-%m-%d %H:%M:%S"
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
relative_path() {
|
|
63
|
+
local path="$1"
|
|
64
|
+
path="${path#"$cwd"/}"
|
|
65
|
+
[[ "$path" == "$cwd" ]] && path="."
|
|
66
|
+
echo "$path"
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
log() {
|
|
70
|
+
local level="$1"
|
|
71
|
+
shift
|
|
72
|
+
|
|
73
|
+
local color="$NC"
|
|
74
|
+
case "$level" in
|
|
75
|
+
OK) color="$GREEN" ;;
|
|
76
|
+
FAIL) color="$RED" ;;
|
|
77
|
+
SKIP) color="$GRAY" ;;
|
|
78
|
+
INFO) color="$BLUE" ;;
|
|
79
|
+
esac
|
|
80
|
+
|
|
81
|
+
echo -e "[${GRAY}$(timestamp)${NC}] [${color}${level}${NC}] $*"
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# -----------------------------------
|
|
85
|
+
# find project root (NO GIT)
|
|
86
|
+
# -----------------------------------
|
|
87
|
+
find_root() {
|
|
88
|
+
local dir="$cwd"
|
|
89
|
+
|
|
90
|
+
while [[ "$dir" != "/" ]]; do
|
|
91
|
+
if [[ -f "$dir/package.json" ]] && grep -q '"workspaces"' "$dir/package.json" 2>/dev/null; then
|
|
92
|
+
echo "$dir"
|
|
93
|
+
return 0
|
|
94
|
+
fi
|
|
95
|
+
dir="$(dirname "$dir")"
|
|
96
|
+
done
|
|
97
|
+
|
|
98
|
+
echo "$cwd"
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
ROOT="$(find_root)"
|
|
102
|
+
cwd="$ROOT"
|
|
103
|
+
|
|
104
|
+
log INFO "Using root: $(relative_path "$ROOT")"
|
|
105
|
+
|
|
106
|
+
# -----------------------------------
|
|
107
|
+
# parse workspaces from package.json
|
|
108
|
+
# -----------------------------------
|
|
109
|
+
get_workspaces() {
|
|
110
|
+
local pkg="$ROOT/package.json"
|
|
111
|
+
|
|
112
|
+
# naive JSON parsing (no jq required)
|
|
113
|
+
# supports:
|
|
114
|
+
# "workspaces": ["packages/*"] OR { "packages": [] }
|
|
115
|
+
|
|
116
|
+
grep -oP '"workspaces"\s*:\s*\K\[[^\]]+\]' "$pkg" 2>/dev/null |
|
|
117
|
+
tr -d '[]"' |
|
|
118
|
+
tr ',' '\n' |
|
|
119
|
+
sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# -----------------------------------
|
|
123
|
+
# expand glob patterns safely
|
|
124
|
+
# -----------------------------------
|
|
125
|
+
expand_glob() {
|
|
126
|
+
local pattern="$1"
|
|
127
|
+
|
|
128
|
+
for dir in $pattern; do
|
|
129
|
+
[[ -d "$dir" ]] && echo "$ROOT/$dir"
|
|
130
|
+
done
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
# -----------------------------------
|
|
134
|
+
# collect node_modules targets
|
|
135
|
+
# -----------------------------------
|
|
136
|
+
declare -a NODE_MODULES_TARGETS
|
|
137
|
+
|
|
138
|
+
# root
|
|
139
|
+
NODE_MODULES_TARGETS+=("$ROOT/node_modules")
|
|
140
|
+
|
|
141
|
+
# workspaces
|
|
142
|
+
while IFS= read -r pattern; do
|
|
143
|
+
[[ -z "$pattern" ]] && continue
|
|
144
|
+
|
|
145
|
+
while IFS= read -r ws; do
|
|
146
|
+
NODE_MODULES_TARGETS+=("$ws/node_modules")
|
|
147
|
+
done < <(expand_glob "$pattern")
|
|
148
|
+
|
|
149
|
+
done < <(get_workspaces)
|
|
150
|
+
|
|
151
|
+
# -----------------------------------
|
|
152
|
+
# deduplicate
|
|
153
|
+
# -----------------------------------
|
|
154
|
+
declare -A seen
|
|
155
|
+
declare -a unique
|
|
156
|
+
|
|
157
|
+
for t in "${NODE_MODULES_TARGETS[@]}"; do
|
|
158
|
+
[[ -z "$t" ]] && continue
|
|
159
|
+
[[ -n "${seen[$t]:-}" ]] && continue
|
|
160
|
+
seen["$t"]=1
|
|
161
|
+
unique+=("$t")
|
|
162
|
+
done
|
|
163
|
+
|
|
164
|
+
NODE_MODULES_TARGETS=("${unique[@]}")
|
|
165
|
+
|
|
166
|
+
# -----------------------------------
|
|
167
|
+
# cleanup function
|
|
168
|
+
# -----------------------------------
|
|
169
|
+
cleanup_letter() {
|
|
170
|
+
local base="$1"
|
|
171
|
+
local letter="$2"
|
|
172
|
+
|
|
173
|
+
[[ -d "$base" ]] || return 0
|
|
174
|
+
|
|
175
|
+
shopt -s nullglob
|
|
176
|
+
|
|
177
|
+
local targets=(
|
|
178
|
+
"${base}/${letter}"*
|
|
179
|
+
"${base}/@types/${letter}"*
|
|
180
|
+
"${base}/@${letter}"*
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
local removed_any=0
|
|
184
|
+
|
|
185
|
+
for path in "${targets[@]}"; do
|
|
186
|
+
[[ -e "$path" ]] || continue
|
|
187
|
+
|
|
188
|
+
local rel
|
|
189
|
+
rel="$(relative_path "$path")"
|
|
190
|
+
|
|
191
|
+
if rm -rf "$path"; then
|
|
192
|
+
log OK "$rel"
|
|
193
|
+
removed_any=1
|
|
194
|
+
else
|
|
195
|
+
log FAIL "$rel"
|
|
196
|
+
fi
|
|
197
|
+
done
|
|
198
|
+
|
|
199
|
+
if (( removed_any == 0 )); then
|
|
200
|
+
log SKIP "$(relative_path "$base") '${letter}'"
|
|
201
|
+
fi
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
# export for parallel
|
|
205
|
+
export -f cleanup_letter
|
|
206
|
+
export -f log
|
|
207
|
+
export -f timestamp
|
|
208
|
+
export -f relative_path
|
|
209
|
+
export cwd GREEN RED GRAY BLUE NC ROOT
|
|
210
|
+
|
|
211
|
+
log INFO "Detected ${#NODE_MODULES_TARGETS[@]} node_modules directories"
|
|
212
|
+
|
|
213
|
+
for t in "${NODE_MODULES_TARGETS[@]}"; do
|
|
214
|
+
log INFO "$(relative_path "$t")"
|
|
215
|
+
done
|
|
216
|
+
|
|
217
|
+
# -----------------------------------
|
|
218
|
+
# parallel deletion
|
|
219
|
+
# -----------------------------------
|
|
220
|
+
running=0
|
|
221
|
+
|
|
222
|
+
for base in "${NODE_MODULES_TARGETS[@]}"; do
|
|
223
|
+
for letter in $(printf "%s\n" {a..z} | shuf); do
|
|
224
|
+
|
|
225
|
+
cleanup_letter "$base" "$letter" &
|
|
226
|
+
|
|
227
|
+
((running++))
|
|
228
|
+
|
|
229
|
+
if (( running >= max_jobs )); then
|
|
230
|
+
wait -n
|
|
231
|
+
((running--))
|
|
232
|
+
fi
|
|
233
|
+
|
|
234
|
+
done
|
|
235
|
+
done
|
|
236
|
+
|
|
237
|
+
wait
|
|
238
|
+
|
|
239
|
+
# -----------------------------------
|
|
240
|
+
# final cleanup
|
|
241
|
+
# -----------------------------------
|
|
242
|
+
log INFO "Removing remaining node_modules directories"
|
|
243
|
+
|
|
244
|
+
for target in "${NODE_MODULES_TARGETS[@]}"; do
|
|
245
|
+
[[ -e "$target" ]] || continue
|
|
246
|
+
|
|
247
|
+
rel="$(relative_path "$target")"
|
|
248
|
+
|
|
249
|
+
if rm -rf "$target"; then
|
|
250
|
+
log OK "$rel"
|
|
251
|
+
else
|
|
252
|
+
log FAIL "$rel"
|
|
253
|
+
fi
|
|
254
|
+
done
|
|
255
|
+
|
|
256
|
+
log INFO "Done"
|
package/binaries/ycw.cjs
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var require$$0 = require('child_process');
|
|
5
|
+
var require$$1 = require('path');
|
|
6
|
+
var require$$2 = require('fs');
|
|
7
|
+
var require$$3 = require('which');
|
|
8
|
+
|
|
9
|
+
function getDefaultExportFromCjs (x) {
|
|
10
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function getAugmentedNamespace(n) {
|
|
14
|
+
if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
|
|
15
|
+
var f = n.default;
|
|
16
|
+
if (typeof f == "function") {
|
|
17
|
+
var a = function a () {
|
|
18
|
+
var isInstance = false;
|
|
19
|
+
try {
|
|
20
|
+
isInstance = this instanceof a;
|
|
21
|
+
} catch (e) {}
|
|
22
|
+
if (isInstance) {
|
|
23
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
24
|
+
}
|
|
25
|
+
return f.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
a.prototype = f.prototype;
|
|
28
|
+
} else a = {};
|
|
29
|
+
Object.defineProperty(a, '__esModule', {value: true});
|
|
30
|
+
Object.keys(n).forEach(function (k) {
|
|
31
|
+
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
32
|
+
Object.defineProperty(a, k, d.get ? d : {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return n[k];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
return a;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var binaryExecutor$1 = {};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Determines if the current platform is Windows
|
|
46
|
+
* @returns {boolean} true if running on Windows, false otherwise
|
|
47
|
+
*/
|
|
48
|
+
function isWindows() {
|
|
49
|
+
return process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE || '');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
var isWindows$1 = /*#__PURE__*/Object.freeze({
|
|
53
|
+
__proto__: null,
|
|
54
|
+
isWindows: isWindows
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
var require$$4 = /*@__PURE__*/getAugmentedNamespace(isWindows$1);
|
|
58
|
+
|
|
59
|
+
var hasRequiredBinaryExecutor;
|
|
60
|
+
|
|
61
|
+
function requireBinaryExecutor () {
|
|
62
|
+
if (hasRequiredBinaryExecutor) return binaryExecutor$1;
|
|
63
|
+
hasRequiredBinaryExecutor = 1;
|
|
64
|
+
/**
|
|
65
|
+
* Built-in Node.js modules:
|
|
66
|
+
*
|
|
67
|
+
* - child_process:
|
|
68
|
+
* Used to launch external scripts/programs.
|
|
69
|
+
*
|
|
70
|
+
* - path:
|
|
71
|
+
* Safely handles file paths across operating systems.
|
|
72
|
+
*
|
|
73
|
+
* - fs:
|
|
74
|
+
* Used to check whether files exist.
|
|
75
|
+
*/
|
|
76
|
+
const { spawnSync } = require$$0;
|
|
77
|
+
const path = require$$1;
|
|
78
|
+
const fs = require$$2;
|
|
79
|
+
const which = require$$3;
|
|
80
|
+
const { isWindows } = require$$4;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* __dirname
|
|
84
|
+
* Absolute directory path of this launcher script.
|
|
85
|
+
*
|
|
86
|
+
* __filename
|
|
87
|
+
* Absolute path of this launcher file itself.
|
|
88
|
+
*
|
|
89
|
+
* base
|
|
90
|
+
* Filename without extension.
|
|
91
|
+
*
|
|
92
|
+
* Example:
|
|
93
|
+
* File = "/tools/mytool.js"
|
|
94
|
+
*
|
|
95
|
+
* binDir = "/tools"
|
|
96
|
+
* base = "mytool"
|
|
97
|
+
*/
|
|
98
|
+
const binDir = __dirname;
|
|
99
|
+
const base = path.basename(__filename, path.extname(__filename));
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Determine which script extensions to search for
|
|
103
|
+
* based on the current operating system.
|
|
104
|
+
*
|
|
105
|
+
* Windows:
|
|
106
|
+
* .cmd
|
|
107
|
+
* .bat
|
|
108
|
+
* .ps1
|
|
109
|
+
* .vbs
|
|
110
|
+
*
|
|
111
|
+
* Linux/macOS:
|
|
112
|
+
* .sh
|
|
113
|
+
* executable file without extension
|
|
114
|
+
*/
|
|
115
|
+
const candidates = process.platform === 'win32' ? ['.cmd', '.bat', '.ps1', '.vbs'] : ['.sh', ''];
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Search for the first matching script
|
|
119
|
+
* in the same directory as this launcher.
|
|
120
|
+
*
|
|
121
|
+
* Example:
|
|
122
|
+
* If base = "mytool"
|
|
123
|
+
*
|
|
124
|
+
* Windows checks:
|
|
125
|
+
* mytool.cmd
|
|
126
|
+
* mytool.bat
|
|
127
|
+
* mytool.ps1
|
|
128
|
+
* mytool.vbs
|
|
129
|
+
*
|
|
130
|
+
* Linux/macOS checks:
|
|
131
|
+
* mytool.sh
|
|
132
|
+
* mytool
|
|
133
|
+
*/
|
|
134
|
+
let found = null;
|
|
135
|
+
|
|
136
|
+
for (const ext of candidates) {
|
|
137
|
+
const script = path.join(binDir, base + ext);
|
|
138
|
+
const exists = fs.existsSync(script);
|
|
139
|
+
// console.log(`Checking for ${script}: ${exists ? 'found' : 'not found'}`);
|
|
140
|
+
if (exists) {
|
|
141
|
+
found = script;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* If no matching script was found,
|
|
148
|
+
* try check if `bash` is available and if so, check for a .sh script.
|
|
149
|
+
*/
|
|
150
|
+
if (!found) {
|
|
151
|
+
try {
|
|
152
|
+
spawnSync('bash', ['--version'], { stdio: 'ignore' });
|
|
153
|
+
const bashScript = [path.join(binDir, base), path.join(binDir, base + '.sh')].find((script) =>
|
|
154
|
+
fs.existsSync(script)
|
|
155
|
+
);
|
|
156
|
+
if (bashScript) {
|
|
157
|
+
found = bashScript;
|
|
158
|
+
}
|
|
159
|
+
} catch {
|
|
160
|
+
// bash is not available, do nothing
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* If no matching script was found,
|
|
166
|
+
* print an error and exit with failure code 1.
|
|
167
|
+
*/
|
|
168
|
+
if (!found) {
|
|
169
|
+
console.error(`No script found for ${base} in ${binDir}`);
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Detect special script types
|
|
175
|
+
* that require a shell/interpreter.
|
|
176
|
+
*/
|
|
177
|
+
const isPs1 = found.endsWith('.ps1');
|
|
178
|
+
const isCmd = found.endsWith('.cmd');
|
|
179
|
+
const isUnixShell = found.endsWith('.sh') || path.extname(found) === '';
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* cmd
|
|
183
|
+
* The executable program to launch.
|
|
184
|
+
*
|
|
185
|
+
* args
|
|
186
|
+
* Arguments passed to the executable.
|
|
187
|
+
*/
|
|
188
|
+
let cmd, args;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* PowerShell scripts:
|
|
192
|
+
*
|
|
193
|
+
* Run through powershell.exe because .ps1 files
|
|
194
|
+
* are not directly executable like binaries.
|
|
195
|
+
*
|
|
196
|
+
* Flags:
|
|
197
|
+
* -NoProfile
|
|
198
|
+
* Prevent loading user profile scripts.
|
|
199
|
+
*
|
|
200
|
+
* -ExecutionPolicy Bypass
|
|
201
|
+
* Allow script execution even if policy blocks it.
|
|
202
|
+
*
|
|
203
|
+
* -File
|
|
204
|
+
* Specifies the script to execute.
|
|
205
|
+
*
|
|
206
|
+
* process.argv.slice(2)
|
|
207
|
+
* Forward all user-provided command-line arguments.
|
|
208
|
+
*/
|
|
209
|
+
if (isPs1) {
|
|
210
|
+
cmd = 'powershell.exe';
|
|
211
|
+
|
|
212
|
+
args = ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', found, ...process.argv.slice(2)];
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* CMD batch files:
|
|
216
|
+
*
|
|
217
|
+
* Run through cmd.exe using:
|
|
218
|
+
* /c
|
|
219
|
+
* which means:
|
|
220
|
+
* "execute command and terminate"
|
|
221
|
+
*/
|
|
222
|
+
} else if (isCmd) {
|
|
223
|
+
cmd = 'cmd.exe';
|
|
224
|
+
|
|
225
|
+
args = ['/c', found, ...process.argv.slice(2)];
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Other scripts:
|
|
229
|
+
*
|
|
230
|
+
* Usually:
|
|
231
|
+
* - shell scripts (.sh)
|
|
232
|
+
* - executable binaries
|
|
233
|
+
*
|
|
234
|
+
* These can be executed directly.
|
|
235
|
+
*/
|
|
236
|
+
} else if (isUnixShell) {
|
|
237
|
+
// Capture shebang scripts (no extension) and .sh scripts
|
|
238
|
+
const shebang = fs.readFileSync(found, 'utf8').split('\n')[0].trim();
|
|
239
|
+
const interpreter = shebang.startsWith('#!')
|
|
240
|
+
? shebang
|
|
241
|
+
.slice(2)
|
|
242
|
+
.trim()
|
|
243
|
+
.replace(/^\/usr\/bin\/env\s+/, '')
|
|
244
|
+
.replace(/^\/bin\/env\s+/, '')
|
|
245
|
+
.replace(/^\/usr\/bin\//, '')
|
|
246
|
+
.replace(/^\/bin\//, '')
|
|
247
|
+
: null;
|
|
248
|
+
|
|
249
|
+
if (interpreter) {
|
|
250
|
+
const resolvedOrNull = which.sync(interpreter, { nothrow: true });
|
|
251
|
+
if (!resolvedOrNull) {
|
|
252
|
+
if (['bash', 'sh'].includes(interpreter) && isWindows()) {
|
|
253
|
+
const locationsToCheck = [
|
|
254
|
+
'C:\\Program Files\\Git\\usr\\bin',
|
|
255
|
+
'C:\\Program Files\\Git\\bin',
|
|
256
|
+
'C:\\Program Files (x86)\\Git\\usr\\bin',
|
|
257
|
+
'C:\\msys64\\usr\\bin',
|
|
258
|
+
'C:\\msys64\\bin',
|
|
259
|
+
'C:\\cygwin64\\bin',
|
|
260
|
+
'C:\\cygwin\\bin',
|
|
261
|
+
'C:\\MinGW\\bin',
|
|
262
|
+
'C:\\MinGW\\msys\\1.0\\bin'
|
|
263
|
+
];
|
|
264
|
+
for (const location of locationsToCheck) {
|
|
265
|
+
const potentialPath = path.join(location, 'bash.exe');
|
|
266
|
+
if (fs.existsSync(potentialPath)) {
|
|
267
|
+
cmd = potentialPath;
|
|
268
|
+
args = [found, ...process.argv.slice(2)];
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
} else {
|
|
274
|
+
cmd = resolvedOrNull || interpreter;
|
|
275
|
+
args = [found, ...process.argv.slice(2)];
|
|
276
|
+
}
|
|
277
|
+
} else {
|
|
278
|
+
cmd = found;
|
|
279
|
+
args = process.argv.slice(2);
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
cmd = found;
|
|
283
|
+
args = process.argv.slice(2);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
console.log(
|
|
287
|
+
`Executing: ${path.isAbsolute(cmd) ? path.relative(process.cwd(), cmd) : cmd} ${args
|
|
288
|
+
.map((f) => {
|
|
289
|
+
if (path.isAbsolute(f)) return path.relative(process.cwd(), f);
|
|
290
|
+
return f;
|
|
291
|
+
})
|
|
292
|
+
.join(' ')}`
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Execute the selected script synchronously.
|
|
297
|
+
*
|
|
298
|
+
* stdio: "inherit"
|
|
299
|
+
* Shares the current terminal with the child process,
|
|
300
|
+
* so stdout/stderr/input behave normally.
|
|
301
|
+
*
|
|
302
|
+
* spawnSync waits until the child process exits.
|
|
303
|
+
*/
|
|
304
|
+
const result = spawnSync(cmd, args, {
|
|
305
|
+
stdio: 'inherit'
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Exit using the same exit code
|
|
310
|
+
* returned by the child process.
|
|
311
|
+
*
|
|
312
|
+
* If result.status is null/undefined,
|
|
313
|
+
* default to exit code 1.
|
|
314
|
+
*/
|
|
315
|
+
process.exit(result.status ?? 1);
|
|
316
|
+
return binaryExecutor$1;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
var binaryExecutorExports = requireBinaryExecutor();
|
|
320
|
+
var binaryExecutor = /*@__PURE__*/getDefaultExportFromCjs(binaryExecutorExports);
|
|
321
|
+
|
|
322
|
+
module.exports = binaryExecutor;
|
|
323
|
+
//# sourceMappingURL=binary-executor.cjs.map
|
|
@@ -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)
|