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