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
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
require_utils as require_utils2
|
|
4
|
+
} from "./chunk-A3VUZEJK.mjs";
|
|
5
|
+
import {
|
|
6
|
+
require_config
|
|
7
|
+
} from "./chunk-SWUAEY4H.mjs";
|
|
8
|
+
import {
|
|
9
|
+
require_utils
|
|
10
|
+
} from "./chunk-6RK5UCTP.mjs";
|
|
11
|
+
import {
|
|
12
|
+
__commonJS,
|
|
13
|
+
__require,
|
|
14
|
+
init_esm_shims
|
|
15
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
16
|
+
|
|
17
|
+
// src/git/user-config.cjs
|
|
18
|
+
var require_user_config = __commonJS({
|
|
19
|
+
"src/git/user-config.cjs"(exports, module) {
|
|
20
|
+
init_esm_shims();
|
|
21
|
+
var { loadDotenv } = require_config();
|
|
22
|
+
var gch = __require("git-command-helper");
|
|
23
|
+
var { runGitCommand, runGitCommandOutput } = require_utils2();
|
|
24
|
+
var { getArgs } = require_utils();
|
|
25
|
+
loadDotenv();
|
|
26
|
+
function configureGitUser(cliUser = null, cliEmail = null, options = {}) {
|
|
27
|
+
console.log("\n=== Configuring Git User ===");
|
|
28
|
+
let username, email;
|
|
29
|
+
if (cliUser && cliEmail) {
|
|
30
|
+
username = cliUser.trim();
|
|
31
|
+
email = cliEmail.trim();
|
|
32
|
+
console.log("[i] Using CLI-provided user configuration");
|
|
33
|
+
} else {
|
|
34
|
+
username = process.env.GITHUB_USER ? process.env.GITHUB_USER.trim() : void 0;
|
|
35
|
+
email = process.env.GITHUB_EMAIL ? process.env.GITHUB_EMAIL.trim() : void 0;
|
|
36
|
+
if (username || email) {
|
|
37
|
+
console.log("[i] Using environment variable user configuration");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!username && !email) {
|
|
41
|
+
console.log("[i] No Git user configuration needed (no CLI args or environment variables set)");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (username) {
|
|
45
|
+
const success = runGitCommand(["config", "user.name", username], `Set Git username to "${username}"`);
|
|
46
|
+
if (!success) {
|
|
47
|
+
console.log("[i] Failed to set Git username, but continuing...");
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
console.log("[i] No username provided, skipping username configuration");
|
|
51
|
+
}
|
|
52
|
+
if (email) {
|
|
53
|
+
const success = runGitCommand(["config", "user.email", email], `Set Git email to "${email}"`);
|
|
54
|
+
if (!success) {
|
|
55
|
+
console.log("[i] Failed to set Git email, but continuing...");
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
console.log("[i] No email provided, skipping email configuration");
|
|
59
|
+
}
|
|
60
|
+
if (username || email) {
|
|
61
|
+
console.log("[\u2713] Git user configuration completed");
|
|
62
|
+
}
|
|
63
|
+
if (username) {
|
|
64
|
+
const remoteUrl = runGitCommandOutput(["remote", "get-url", "origin"], "Fetching remote URL for verification");
|
|
65
|
+
if (remoteUrl) {
|
|
66
|
+
console.log(`[i] Remote URL: ${remoteUrl}`);
|
|
67
|
+
const parsedUrl = gch.parseGitHubUrl(remoteUrl);
|
|
68
|
+
if (parsedUrl && parsedUrl.owner && username && parsedUrl.owner.toLowerCase() !== username.toLowerCase()) {
|
|
69
|
+
console.warn(
|
|
70
|
+
`
|
|
71
|
+
[!] The GitHub remote owner ("${parsedUrl.owner}") does not match the configured username ("${username}").`
|
|
72
|
+
);
|
|
73
|
+
console.warn(`[!] If this is not intentional, consider updating the remote URL to use your username.`);
|
|
74
|
+
console.warn(`[!] Example: git remote set-url origin https://github.com/${username}/<repo>.git
|
|
75
|
+
`);
|
|
76
|
+
const args = getArgs();
|
|
77
|
+
const updateRemote = options.updateRemote || args["update-remote"] === true;
|
|
78
|
+
if (updateRemote) {
|
|
79
|
+
let newUrl = remoteUrl;
|
|
80
|
+
if (/^https:\/\//.test(remoteUrl)) {
|
|
81
|
+
newUrl = remoteUrl.replace(/https:\/\/(?:[^@]+@)?github.com/, `https://${username}@github.com`);
|
|
82
|
+
} else if (/^git@github.com:/.test(remoteUrl)) {
|
|
83
|
+
console.warn(
|
|
84
|
+
`[!] For SSH remotes, set your SSH config or use HTTPS with username if you want to change authentication user.`
|
|
85
|
+
);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (newUrl !== remoteUrl) {
|
|
89
|
+
const updated = runGitCommand(["remote", "set-url", "origin", newUrl], `Set origin to ${newUrl}`);
|
|
90
|
+
if (updated) {
|
|
91
|
+
console.log(`[\u2713] Remote URL updated to: ${newUrl}`);
|
|
92
|
+
} else {
|
|
93
|
+
console.warn(`[!] Failed to update remote URL. Please update it manually if needed.`);
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
console.log(`[i] Remote URL does not use HTTPS or already contains the username.`);
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
console.log(`[i] Remote URL not changed. Use --update-remote to update automatically.`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
module.exports = {
|
|
106
|
+
configureGitUser
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
export {
|
|
112
|
+
require_user_config
|
|
113
|
+
};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
require_config
|
|
4
|
+
} from "./chunk-PAZH45HS.mjs";
|
|
5
|
+
import {
|
|
6
|
+
__toESM,
|
|
7
|
+
init_esm_shims
|
|
8
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
9
|
+
|
|
10
|
+
// src/github-workflows/get-latest-workflow-status.mjs
|
|
11
|
+
init_esm_shims();
|
|
12
|
+
var import_config = __toESM(require_config(), 1);
|
|
13
|
+
import axios from "axios";
|
|
14
|
+
import { spawn } from "cross-spawn";
|
|
15
|
+
if (!import_config.GITHUB_ACCESS_TOKEN) {
|
|
16
|
+
console.error("Missing env var: ACCESS_TOKEN or GITHUB_TOKEN");
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
var BASE = "https://api.github.com";
|
|
20
|
+
var headers = {
|
|
21
|
+
Authorization: `Bearer ${import_config.GITHUB_ACCESS_TOKEN}`,
|
|
22
|
+
Accept: "application/vnd.github+json",
|
|
23
|
+
"X-GitHub-Api-Version": "2022-11-28"
|
|
24
|
+
};
|
|
25
|
+
async function request(url) {
|
|
26
|
+
try {
|
|
27
|
+
const res = await axios.get(url, { headers });
|
|
28
|
+
return res.data;
|
|
29
|
+
} catch (err) {
|
|
30
|
+
if (err == null ? void 0 : err.response) {
|
|
31
|
+
const statusText = err.response.statusText || "Request failed";
|
|
32
|
+
const responseText = typeof err.response.data === "string" ? err.response.data : JSON.stringify(err.response.data);
|
|
33
|
+
throw new Error(`${err.response.status} ${statusText}
|
|
34
|
+
${responseText}`);
|
|
35
|
+
}
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function runGit(args) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const child = spawn("git", args, {
|
|
43
|
+
cwd: process.cwd(),
|
|
44
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
45
|
+
});
|
|
46
|
+
let stdout = "";
|
|
47
|
+
let stderr = "";
|
|
48
|
+
(_a = child.stdout) == null ? void 0 : _a.on("data", (chunk) => {
|
|
49
|
+
stdout += chunk.toString();
|
|
50
|
+
});
|
|
51
|
+
(_b = child.stderr) == null ? void 0 : _b.on("data", (chunk) => {
|
|
52
|
+
stderr += chunk.toString();
|
|
53
|
+
});
|
|
54
|
+
child.on("error", reject);
|
|
55
|
+
child.on("close", (code) => {
|
|
56
|
+
if (code === 0) {
|
|
57
|
+
resolve(stdout.trim());
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
reject(new Error(stderr.trim() || `git ${args.join(" ")} exited with code ${code}`));
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function getOwnerFromRemoteUrl(remoteUrl) {
|
|
65
|
+
var _a;
|
|
66
|
+
const normalized = remoteUrl.trim().replace(/\.git$/i, "");
|
|
67
|
+
const match = normalized.match(/github\.com[:/](?<owner>[^/]+)\/(?<repo>[^/]+)$/i);
|
|
68
|
+
return ((_a = match == null ? void 0 : match.groups) == null ? void 0 : _a.owner) || null;
|
|
69
|
+
}
|
|
70
|
+
function getRepoFromRemoteUrl(remoteUrl) {
|
|
71
|
+
var _a;
|
|
72
|
+
const normalized = remoteUrl.trim().replace(/\.git$/i, "");
|
|
73
|
+
const match = normalized.match(/github\.com[:/](?<owner>[^/]+)\/(?<repo>[^/]+)$/i);
|
|
74
|
+
return ((_a = match == null ? void 0 : match.groups) == null ? void 0 : _a.repo) || null;
|
|
75
|
+
}
|
|
76
|
+
async function getCurrentOwner() {
|
|
77
|
+
const commands = [
|
|
78
|
+
["config", "--local", "--get", "remote.origin.url"],
|
|
79
|
+
["remote", "get-url", "origin"]
|
|
80
|
+
];
|
|
81
|
+
for (const args of commands) {
|
|
82
|
+
try {
|
|
83
|
+
const remoteUrl = await runGit(args);
|
|
84
|
+
const owner = getOwnerFromRemoteUrl(remoteUrl);
|
|
85
|
+
if (owner) {
|
|
86
|
+
return owner;
|
|
87
|
+
}
|
|
88
|
+
} catch {
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
throw new Error("Unable to determine repository owner from git remote.origin.url");
|
|
92
|
+
}
|
|
93
|
+
async function getCurrentRepo() {
|
|
94
|
+
const commands = [
|
|
95
|
+
["config", "--local", "--get", "remote.origin.url"],
|
|
96
|
+
["remote", "get-url", "origin"]
|
|
97
|
+
];
|
|
98
|
+
for (const args of commands) {
|
|
99
|
+
try {
|
|
100
|
+
const remoteUrl = await runGit(args);
|
|
101
|
+
const repo = getRepoFromRemoteUrl(remoteUrl);
|
|
102
|
+
if (repo) {
|
|
103
|
+
return repo;
|
|
104
|
+
}
|
|
105
|
+
} catch {
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throw new Error("Unable to determine repository name from git remote.origin.url");
|
|
109
|
+
}
|
|
110
|
+
async function getLatestRun(owner, repo, workflowId) {
|
|
111
|
+
var _a;
|
|
112
|
+
let url;
|
|
113
|
+
if (workflowId) {
|
|
114
|
+
url = `${BASE}/repos/${owner}/${repo}/actions/workflows/${encodeURIComponent(workflowId)}/runs?per_page=1`;
|
|
115
|
+
} else {
|
|
116
|
+
url = `${BASE}/repos/${owner}/${repo}/actions/runs?per_page=1`;
|
|
117
|
+
}
|
|
118
|
+
const data = await request(url);
|
|
119
|
+
return (_a = data.workflow_runs) == null ? void 0 : _a[0];
|
|
120
|
+
}
|
|
121
|
+
async function getJobs(owner, repo, runId) {
|
|
122
|
+
const url = `${BASE}/repos/${owner}/${repo}/actions/runs/${runId}/jobs`;
|
|
123
|
+
const data = await request(url);
|
|
124
|
+
return data.jobs || [];
|
|
125
|
+
}
|
|
126
|
+
function printReport(run, jobs) {
|
|
127
|
+
var _a;
|
|
128
|
+
console.log("\n==============================");
|
|
129
|
+
console.log("\u{1F680} Latest Workflow Run");
|
|
130
|
+
console.log("==============================");
|
|
131
|
+
console.log(`Name : ${run.name}`);
|
|
132
|
+
console.log(`Status : ${run.status}`);
|
|
133
|
+
console.log(`Conclusion: ${run.conclusion}`);
|
|
134
|
+
console.log(`Branch : ${run.head_branch}`);
|
|
135
|
+
console.log(`Run ID : ${run.id}`);
|
|
136
|
+
console.log(`URL : ${run.html_url}`);
|
|
137
|
+
console.log("\n==============================");
|
|
138
|
+
console.log("\u{1F9E9} Jobs & Steps");
|
|
139
|
+
console.log("==============================\n");
|
|
140
|
+
for (const job of jobs) {
|
|
141
|
+
console.log(`\u{1F9F1} Job: ${job.name}`);
|
|
142
|
+
console.log(` Status: ${job.status} | Conclusion: ${job.conclusion}`);
|
|
143
|
+
if (!((_a = job.steps) == null ? void 0 : _a.length)) {
|
|
144
|
+
console.log(" (no steps found)\n");
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
for (const step of job.steps) {
|
|
148
|
+
const icon = step.conclusion === "success" ? "\u2705" : step.conclusion === "failure" ? "\u274C" : step.conclusion === "skipped" ? "\u23ED\uFE0F" : "\u26AA";
|
|
149
|
+
console.log(` ${icon} ${step.name} -> ${step.conclusion} (${step.status})`);
|
|
150
|
+
}
|
|
151
|
+
console.log("");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export {
|
|
156
|
+
request,
|
|
157
|
+
getOwnerFromRemoteUrl,
|
|
158
|
+
getRepoFromRemoteUrl,
|
|
159
|
+
getCurrentOwner,
|
|
160
|
+
getCurrentRepo,
|
|
161
|
+
getLatestRun,
|
|
162
|
+
getJobs,
|
|
163
|
+
printReport
|
|
164
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
5
|
+
|
|
6
|
+
// src/run-by-checksum/hash.js
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
import fs from "fs-extra";
|
|
9
|
+
import * as glob from "glob";
|
|
10
|
+
import upath from "upath";
|
|
11
|
+
import path from "upath";
|
|
12
|
+
import crypto from "crypto";
|
|
13
|
+
function getAllFiles({ patterns, ignore, cwd }) {
|
|
14
|
+
const files = /* @__PURE__ */ new Set();
|
|
15
|
+
const root = cwd || process.cwd();
|
|
16
|
+
for (const pattern of patterns) {
|
|
17
|
+
const matched = glob.sync(pattern, {
|
|
18
|
+
cwd: root,
|
|
19
|
+
nodir: true,
|
|
20
|
+
ignore
|
|
21
|
+
});
|
|
22
|
+
for (const f of matched) {
|
|
23
|
+
files.add(upath.normalize(path.resolve(root, f)));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return [...files].sort();
|
|
27
|
+
}
|
|
28
|
+
function hashFile(file) {
|
|
29
|
+
const content = fs.readFileSync(file);
|
|
30
|
+
return crypto.createHash("sha256").update(content).digest("hex");
|
|
31
|
+
}
|
|
32
|
+
function buildChecksum(files) {
|
|
33
|
+
const hash = crypto.createHash("sha256");
|
|
34
|
+
for (const file of files) {
|
|
35
|
+
hash.update(file);
|
|
36
|
+
hash.update(hashFile(file));
|
|
37
|
+
}
|
|
38
|
+
return hash.digest("hex");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
getAllFiles,
|
|
43
|
+
buildChecksum
|
|
44
|
+
};
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
5
|
+
|
|
6
|
+
// src/github-workflows/workflow-badge-generator.mjs
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
var COLORS = {
|
|
9
|
+
success: "#2da44e",
|
|
10
|
+
failure: "#cf222e",
|
|
11
|
+
cancelled: "#656d76",
|
|
12
|
+
skipped: "#656d76",
|
|
13
|
+
inProgress: "#d4920b",
|
|
14
|
+
pending: "#656d76",
|
|
15
|
+
unknown: "#656d76",
|
|
16
|
+
text: "#1f2328",
|
|
17
|
+
textSecondary: "#656d76",
|
|
18
|
+
border: "#d0d7de",
|
|
19
|
+
bg: "#ffffff",
|
|
20
|
+
cardBg: "#f6f8fa"
|
|
21
|
+
};
|
|
22
|
+
function getStatusMeta(run) {
|
|
23
|
+
const { status, conclusion } = run;
|
|
24
|
+
if (conclusion === "success") return { label: "Passing", color: COLORS.success };
|
|
25
|
+
if (conclusion === "failure") return { label: "Failing", color: COLORS.failure };
|
|
26
|
+
if (conclusion === "cancelled") return { label: "Cancelled", color: COLORS.cancelled };
|
|
27
|
+
if (conclusion === "skipped") return { label: "Skipped", color: COLORS.skipped };
|
|
28
|
+
if (status === "in_progress") return { label: "In Progress", color: COLORS.inProgress };
|
|
29
|
+
if (status === "queued" || status === "pending") return { label: "Pending", color: COLORS.pending };
|
|
30
|
+
return { label: status || "Unknown", color: COLORS.unknown };
|
|
31
|
+
}
|
|
32
|
+
function esc(str) {
|
|
33
|
+
return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
34
|
+
}
|
|
35
|
+
function countSteps(jobs) {
|
|
36
|
+
let total = 0, passed = 0, failed = 0, skipped = 0, pending = 0;
|
|
37
|
+
for (const job of jobs) {
|
|
38
|
+
for (const step of job.steps || []) {
|
|
39
|
+
total++;
|
|
40
|
+
if (step.conclusion === "success") passed++;
|
|
41
|
+
else if (step.conclusion === "failure") failed++;
|
|
42
|
+
else if (step.conclusion === "skipped") skipped++;
|
|
43
|
+
else pending++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { total, passed, failed, skipped, pending };
|
|
47
|
+
}
|
|
48
|
+
function jobColor(job) {
|
|
49
|
+
if (job.conclusion === "success") return COLORS.success;
|
|
50
|
+
if (job.conclusion === "failure") return COLORS.failure;
|
|
51
|
+
if (job.status === "in_progress") return COLORS.inProgress;
|
|
52
|
+
return COLORS.pending;
|
|
53
|
+
}
|
|
54
|
+
function generateBadge(run, jobs, options = {}) {
|
|
55
|
+
const width = options.width || 520;
|
|
56
|
+
const maxSteps = options.maxSteps;
|
|
57
|
+
const { label: statusLabel, color: accentColor } = getStatusMeta(run);
|
|
58
|
+
const steps = countSteps(jobs);
|
|
59
|
+
const PAD = 20;
|
|
60
|
+
const W = width;
|
|
61
|
+
const RIGHT = width - PAD;
|
|
62
|
+
const INNER_W = RIGHT - PAD;
|
|
63
|
+
const els = [];
|
|
64
|
+
const el = (str) => els.push(str);
|
|
65
|
+
const LABEL_X = PAD;
|
|
66
|
+
const VALUE_X = 110;
|
|
67
|
+
let yCursor = 0;
|
|
68
|
+
const divider = () => {
|
|
69
|
+
yCursor += 4;
|
|
70
|
+
el(`<line x1="${PAD}" y1="${yCursor}" x2="${RIGHT}" y2="${yCursor}" stroke="${COLORS.border}" stroke-width="1"/>`);
|
|
71
|
+
yCursor += 5;
|
|
72
|
+
};
|
|
73
|
+
const sectionHeading = (text) => {
|
|
74
|
+
yCursor += 8;
|
|
75
|
+
el(
|
|
76
|
+
`<text x="${PAD}" y="${yCursor + 13}" font-size="11" font-weight="700" fill="${COLORS.textSecondary}" letter-spacing="0.5">${esc(text)}</text>`
|
|
77
|
+
);
|
|
78
|
+
yCursor += 22;
|
|
79
|
+
};
|
|
80
|
+
el(`<rect x="0" y="0" width="${W}" height="4" fill="${accentColor}"/>`);
|
|
81
|
+
yCursor = 4;
|
|
82
|
+
yCursor += 14;
|
|
83
|
+
const titleBaseline = yCursor + 15;
|
|
84
|
+
el(
|
|
85
|
+
`<text x="${PAD}" y="${titleBaseline}" font-size="15" font-weight="700" fill="${COLORS.text}">Workflow Status</text>`
|
|
86
|
+
);
|
|
87
|
+
const pillText = statusLabel;
|
|
88
|
+
const pillTextW = pillText.length * 7.8 + 32;
|
|
89
|
+
const pillX = RIGHT - pillTextW;
|
|
90
|
+
const pillY = titleBaseline - 12;
|
|
91
|
+
el(`<rect x="${pillX}" y="${pillY}" width="${pillTextW}" height="22" rx="11" fill="${accentColor}" opacity="0.12"/>`);
|
|
92
|
+
el(`<circle cx="${pillX + 14}" cy="${titleBaseline - 2}" r="4.5" fill="${accentColor}"/>`);
|
|
93
|
+
el(
|
|
94
|
+
`<text x="${pillX + 24}" y="${titleBaseline + 1}" font-size="12" font-weight="600" fill="${accentColor}">${esc(pillText)}</text>`
|
|
95
|
+
);
|
|
96
|
+
yCursor = titleBaseline + 4;
|
|
97
|
+
divider();
|
|
98
|
+
const metaRows = [
|
|
99
|
+
{ label: "Workflow", value: run.name || "" },
|
|
100
|
+
{ label: "Status", value: `${run.status}${run.conclusion ? ` (${run.conclusion})` : ""}` },
|
|
101
|
+
{ label: "Branch", value: run.head_branch || "" },
|
|
102
|
+
{ label: "Run ID", value: `#${run.id || ""}` }
|
|
103
|
+
];
|
|
104
|
+
for (const row of metaRows) {
|
|
105
|
+
const rowBaseline = yCursor + 14;
|
|
106
|
+
el(
|
|
107
|
+
`<text x="${LABEL_X}" y="${rowBaseline}" font-size="12" fill="${COLORS.textSecondary}">${esc(row.label)}</text>`
|
|
108
|
+
);
|
|
109
|
+
el(
|
|
110
|
+
`<text x="${VALUE_X}" y="${rowBaseline}" font-size="13" fill="${COLORS.text}" font-weight="500">${esc(row.value)}</text>`
|
|
111
|
+
);
|
|
112
|
+
yCursor += 22;
|
|
113
|
+
}
|
|
114
|
+
divider();
|
|
115
|
+
sectionHeading("JOBS");
|
|
116
|
+
for (const job of jobs) {
|
|
117
|
+
const jColor = jobColor(job);
|
|
118
|
+
const jStatus = job.conclusion || job.status;
|
|
119
|
+
el(`<rect x="${PAD}" y="${yCursor}" width="${INNER_W}" height="28" rx="6" fill="${COLORS.cardBg}"/>`);
|
|
120
|
+
el(
|
|
121
|
+
`<text x="${PAD + 10}" y="${yCursor + 18}" font-size="13" font-weight="600" fill="${COLORS.text}">${esc(job.name)}</text>`
|
|
122
|
+
);
|
|
123
|
+
const jobStatusX = RIGHT - 14;
|
|
124
|
+
el(`<circle cx="${jobStatusX - 16}" cy="${yCursor + 14}" r="3.5" fill="${jColor}"/>`);
|
|
125
|
+
el(
|
|
126
|
+
`<text x="${jobStatusX}" y="${yCursor + 18}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(jStatus)}</text>`
|
|
127
|
+
);
|
|
128
|
+
yCursor += 34;
|
|
129
|
+
if (job.steps && job.steps.length > 0) {
|
|
130
|
+
const stepsToRender = maxSteps ? job.steps.slice(0, maxSteps) : job.steps;
|
|
131
|
+
const hiddenCount = maxSteps ? job.steps.length - maxSteps : 0;
|
|
132
|
+
for (const step of stepsToRender) {
|
|
133
|
+
const sIcon = step.conclusion === "success" ? "\u2713" : step.conclusion === "failure" ? "\u2717" : step.conclusion === "skipped" ? "\u2013" : "\u25CB";
|
|
134
|
+
const sColor = step.conclusion === "success" ? COLORS.success : step.conclusion === "failure" ? COLORS.failure : step.conclusion === "skipped" ? COLORS.textSecondary : COLORS.inProgress;
|
|
135
|
+
el(`<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${sColor}">${sIcon}</text>`);
|
|
136
|
+
let stepName = step.name || "";
|
|
137
|
+
const maxChars = 52;
|
|
138
|
+
if (stepName.length > maxChars) {
|
|
139
|
+
stepName = stepName.slice(0, maxChars - 3) + "...";
|
|
140
|
+
}
|
|
141
|
+
el(`<text x="${PAD + 36}" y="${yCursor + 13}" font-size="12" fill="${COLORS.text}">${esc(stepName)}</text>`);
|
|
142
|
+
const stepStatus = step.conclusion || step.status || "";
|
|
143
|
+
el(
|
|
144
|
+
`<text x="${RIGHT}" y="${yCursor + 13}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(stepStatus)}</text>`
|
|
145
|
+
);
|
|
146
|
+
yCursor += 20;
|
|
147
|
+
}
|
|
148
|
+
if (hiddenCount > 0) {
|
|
149
|
+
el(
|
|
150
|
+
`<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}" font-style="italic">and ${hiddenCount} more step${hiddenCount !== 1 ? "s" : ""}...</text>`
|
|
151
|
+
);
|
|
152
|
+
yCursor += 20;
|
|
153
|
+
}
|
|
154
|
+
yCursor += 4;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
divider();
|
|
158
|
+
const footerParts = [];
|
|
159
|
+
if (steps.passed > 0) footerParts.push(`${steps.passed} \u2713 passed`);
|
|
160
|
+
if (steps.failed > 0) footerParts.push(`${steps.failed} \u2717 failed`);
|
|
161
|
+
if (steps.pending > 0) footerParts.push(`${steps.pending} \u25CB pending`);
|
|
162
|
+
if (steps.skipped > 0) footerParts.push(`${steps.skipped} \u2013 skipped`);
|
|
163
|
+
const footerText = footerParts.length > 0 ? footerParts.join(" \xB7 ") : "No steps recorded";
|
|
164
|
+
el(`<text x="${PAD}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}">${esc(footerText)}</text>`);
|
|
165
|
+
yCursor += 22;
|
|
166
|
+
const totalHeight = yCursor + 6;
|
|
167
|
+
const svg = [
|
|
168
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${totalHeight}" viewBox="0 0 ${W} ${totalHeight}" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif">`,
|
|
169
|
+
` <defs>`,
|
|
170
|
+
` <filter id="badge-shadow" x="-2%" y="-2%" width="104%" height="104%">`,
|
|
171
|
+
` <feDropShadow dx="0" dy="1" stdDeviation="3" flood-color="#000" flood-opacity="0.12"/>`,
|
|
172
|
+
` </filter>`,
|
|
173
|
+
` </defs>`,
|
|
174
|
+
` <rect x="0.5" y="0.5" width="${W - 1}" height="${totalHeight - 1}" rx="8" fill="${COLORS.bg}" stroke="${COLORS.border}" stroke-width="1" filter="url(#badge-shadow)"/>`,
|
|
175
|
+
...els,
|
|
176
|
+
`</svg>`
|
|
177
|
+
].join("\n");
|
|
178
|
+
return svg;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export {
|
|
182
|
+
generateBadge
|
|
183
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
5
|
+
|
|
6
|
+
// src/opencode/storage.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
import path from "upath";
|
|
9
|
+
import os from "os";
|
|
10
|
+
import fs from "fs-extra";
|
|
11
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
12
|
+
var OPCODE_DIR = path.join(os.homedir(), ".local/share/opencode");
|
|
13
|
+
var CONFIG_DIR = path.join(os.homedir(), ".config/opencode");
|
|
14
|
+
var CACHE_DIR = path.join(os.homedir(), ".cache/opencode");
|
|
15
|
+
var LOG_DIR = path.join(OPCODE_DIR, "log");
|
|
16
|
+
var AUTH_PATH = path.join(OPCODE_DIR, "auth.json");
|
|
17
|
+
var PROJECT_DIR = path.join(OPCODE_DIR, "project");
|
|
18
|
+
var STORAGE_PATH = path.join(OPCODE_DIR, "storage");
|
|
19
|
+
var SESSION_PATH = path.join(STORAGE_PATH, "session");
|
|
20
|
+
var SESSION_DIFF_DIR = path.join(STORAGE_PATH, "session_diff");
|
|
21
|
+
var DATABASE_PATH = path.join(OPCODE_DIR, "opencode.db");
|
|
22
|
+
async function scanJson(dir) {
|
|
23
|
+
const results = [];
|
|
24
|
+
try {
|
|
25
|
+
const entries = await fs.readdir(dir);
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
if (!entry.endsWith(".json")) continue;
|
|
28
|
+
const content = await fs.readFile(path.join(dir, entry), "utf-8");
|
|
29
|
+
results.push(JSON.parse(content));
|
|
30
|
+
}
|
|
31
|
+
} catch {
|
|
32
|
+
}
|
|
33
|
+
return results;
|
|
34
|
+
}
|
|
35
|
+
async function scanDirs(dir) {
|
|
36
|
+
try {
|
|
37
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
38
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
39
|
+
} catch {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function readJson(filePath) {
|
|
44
|
+
try {
|
|
45
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
46
|
+
return parseJsonc(content);
|
|
47
|
+
} catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function getSessionFileById(sessionId) {
|
|
52
|
+
return path.join(SESSION_DIFF_DIR, `${sessionId}.json`);
|
|
53
|
+
}
|
|
54
|
+
function getOpenCodeAuth() {
|
|
55
|
+
const file = path.join(OPCODE_DIR, "auth.json");
|
|
56
|
+
if (!fs.existsSync(file)) return null;
|
|
57
|
+
return readJson(file);
|
|
58
|
+
}
|
|
59
|
+
async function saveOpenCodeAuth(auth) {
|
|
60
|
+
const file = path.join(OPCODE_DIR, "auth.json");
|
|
61
|
+
await fs.ensureFile(file);
|
|
62
|
+
await fs.writeFile(file, JSON.stringify(auth, null, 2), "utf-8");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
OPCODE_DIR,
|
|
67
|
+
CONFIG_DIR,
|
|
68
|
+
CACHE_DIR,
|
|
69
|
+
LOG_DIR,
|
|
70
|
+
AUTH_PATH,
|
|
71
|
+
PROJECT_DIR,
|
|
72
|
+
STORAGE_PATH,
|
|
73
|
+
SESSION_PATH,
|
|
74
|
+
SESSION_DIFF_DIR,
|
|
75
|
+
DATABASE_PATH,
|
|
76
|
+
scanJson,
|
|
77
|
+
scanDirs,
|
|
78
|
+
readJson,
|
|
79
|
+
getSessionFileById,
|
|
80
|
+
getOpenCodeAuth,
|
|
81
|
+
saveOpenCodeAuth
|
|
82
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
getCacheFile,
|
|
4
|
+
loadCache,
|
|
5
|
+
saveCache
|
|
6
|
+
} from "./chunk-QD4T255Z.mjs";
|
|
7
|
+
import {
|
|
8
|
+
buildChecksum,
|
|
9
|
+
getAllFiles
|
|
10
|
+
} from "./chunk-MCCMMZSM.mjs";
|
|
11
|
+
import {
|
|
12
|
+
init_esm_shims
|
|
13
|
+
} from "./chunk-QQ4A6DLD.mjs";
|
|
14
|
+
|
|
15
|
+
// src/run-by-checksum/run.js
|
|
16
|
+
init_esm_shims();
|
|
17
|
+
import { spawn } from "child_process";
|
|
18
|
+
async function runChecksum({
|
|
19
|
+
patterns = [],
|
|
20
|
+
ignore = [],
|
|
21
|
+
exec,
|
|
22
|
+
cwd = process.env.INIT_CWD || process.cwd(),
|
|
23
|
+
dryRun = false
|
|
24
|
+
}) {
|
|
25
|
+
if (!patterns.length && !exec) {
|
|
26
|
+
console.log("No patterns or command provided, skipping checksum runner.");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
if (!exec) {
|
|
30
|
+
console.log("No command provided, skipping checksum runner.");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
if (!patterns.length) {
|
|
34
|
+
console.log("No patterns provided, skipping checksum runner.");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const files = getAllFiles({ patterns, ignore, cwd });
|
|
38
|
+
const checksum = buildChecksum(files);
|
|
39
|
+
const cacheFile = getCacheFile({ patterns, ignore, cwd });
|
|
40
|
+
const cache = loadCache(cacheFile);
|
|
41
|
+
if ((cache == null ? void 0 : cache.checksum) === checksum) {
|
|
42
|
+
return {
|
|
43
|
+
changed: false,
|
|
44
|
+
cacheFile,
|
|
45
|
+
files
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (dryRun) {
|
|
49
|
+
return {
|
|
50
|
+
changed: true,
|
|
51
|
+
cacheFile,
|
|
52
|
+
files,
|
|
53
|
+
skipped: true
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
await runCommand(exec, cwd);
|
|
57
|
+
saveCache(cacheFile, {
|
|
58
|
+
checksum,
|
|
59
|
+
files,
|
|
60
|
+
patterns,
|
|
61
|
+
ignore,
|
|
62
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
changed: true,
|
|
66
|
+
cacheFile,
|
|
67
|
+
files
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function runCommand(command, cwd) {
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
const child = spawn(command, {
|
|
73
|
+
shell: true,
|
|
74
|
+
stdio: "inherit",
|
|
75
|
+
cwd
|
|
76
|
+
});
|
|
77
|
+
child.on("exit", (code) => {
|
|
78
|
+
if (code === 0 || code === null) resolve();
|
|
79
|
+
else reject(new Error(`Command failed: ${code}`));
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
runChecksum
|
|
86
|
+
};
|