binary-collections 2.0.9 → 2.0.11

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 (306) hide show
  1. package/.puppeterrc.cjs +25 -0
  2. package/binaries/binary-executor.cjs +178 -0
  3. package/{bin → binaries}/clean-nodemodule +0 -0
  4. package/binaries/clean-nodemodule.cjs +178 -0
  5. package/binaries/clean-nodemodule.cmd +4 -0
  6. package/{bin → binaries}/clean-nodemodules +0 -0
  7. package/binaries/clean-nodemodules.cjs +178 -0
  8. package/binaries/clean-nodemodules.cmd +5 -0
  9. package/{bin → binaries}/dev +0 -0
  10. package/binaries/dev.cjs +178 -0
  11. package/{bin → binaries}/empty +0 -0
  12. package/binaries/empty.cjs +178 -0
  13. package/{bin → binaries}/git-reduce-size +0 -0
  14. package/binaries/git-reduce-size.cjs +178 -0
  15. package/binaries/javakill.cjs +178 -0
  16. package/{bin → binaries}/javakill.cmd +0 -0
  17. package/binaries/kill-night-crows.bat +7 -0
  18. package/binaries/kill-night-crows.ps1 +172 -0
  19. package/{bin → binaries}/kill-process +0 -0
  20. package/binaries/kill-process.cjs +178 -0
  21. package/binaries/nodekill.cjs +178 -0
  22. package/{bin → binaries}/nodekill.ps1 +0 -0
  23. package/{bin → binaries}/prod +0 -0
  24. package/binaries/prod.cjs +178 -0
  25. package/binaries/py +111 -0
  26. package/binaries/py.cjs +178 -0
  27. package/binaries/py.cmd +49 -0
  28. package/{bin → binaries}/rmfind +0 -0
  29. package/binaries/rmfind.cjs +178 -0
  30. package/{bin → binaries}/rmx +0 -0
  31. package/binaries/rmx.cjs +178 -0
  32. package/{bin → binaries}/submodule-token +0 -0
  33. package/binaries/submodule-token.cjs +178 -0
  34. package/binaries/test-cjs +10 -0
  35. package/binaries/test-cjs.cjs +178 -0
  36. package/binaries/test-cjs.cmd +11 -0
  37. package/binaries/yarn-clean +32 -0
  38. package/binaries/yarn-clean.cjs +178 -0
  39. package/binaries/yarn-clean.cmd +30 -0
  40. package/binaries/yarn-clean.py +148 -0
  41. package/docs-src/clean-github-actions-caches.md +26 -0
  42. package/docs-src/free-chatgpt.md +26 -0
  43. package/lib/binary-collections-config.cjs +3 -2
  44. package/lib/binary-collections-config.mjs +2 -2
  45. package/lib/binary-collections.cjs +513 -105
  46. package/lib/binary-collections.mjs +178 -117
  47. package/lib/changelog.cjs +64 -16
  48. package/lib/changelog.mjs +177 -171
  49. package/lib/{chunk-VVEZVNIV.mjs → chunk-2CBJCW7E.mjs} +3 -3
  50. package/lib/chunk-34IQDTLZ.mjs +27 -0
  51. package/lib/chunk-3HFFECCI.mjs +27 -0
  52. package/lib/chunk-4UHL4WVN.mjs +136 -0
  53. package/lib/{chunk-4BYBVEYC.mjs → chunk-66PAU5PS.mjs} +5 -4
  54. package/lib/chunk-6HHJRKFB.mjs +59 -0
  55. package/lib/chunk-6S4NXESK.mjs +26 -0
  56. package/lib/chunk-7XTEJHOE.mjs +193 -0
  57. package/lib/{chunk-ZYAQRPUL.mjs → chunk-7YD7IPFF.mjs} +2 -2
  58. package/lib/{chunk-SH3L6HHV.mjs → chunk-A2JQXI5Z.mjs} +2 -2
  59. package/lib/{chunk-EGSSKVDH.mjs → chunk-A3VUZEJK.mjs} +1 -1
  60. package/lib/chunk-AJDD5DZM.mjs +109 -0
  61. package/lib/chunk-BZWVHODJ.mjs +62 -0
  62. package/lib/chunk-FCDQGYBF.mjs +136 -0
  63. package/lib/chunk-FKI7IEB5.mjs +172 -0
  64. package/lib/chunk-GEYA2USY.mjs +207 -0
  65. package/lib/chunk-GJTGHXRA.mjs +356 -0
  66. package/lib/{chunk-YV7DO3YV.mjs → chunk-HLGOWBEO.mjs} +1 -1
  67. package/lib/chunk-ID2WBTE2.mjs +80 -0
  68. package/lib/chunk-JXFOHKDM.mjs +239 -0
  69. package/lib/{chunk-YX5U7XDR.mjs → chunk-M3YIYRHT.mjs} +6 -5
  70. package/lib/chunk-N436BNBK.mjs +514 -0
  71. package/lib/chunk-NCXAP7AA.mjs +31 -0
  72. package/lib/chunk-PDN26I7O.mjs +188 -0
  73. package/lib/{chunk-JGR2NW6D.mjs → chunk-PDSXF5HY.mjs} +3 -3
  74. package/lib/{chunk-AASHBCRW.mjs → chunk-QQ4A6DLD.mjs} +8 -0
  75. package/lib/{chunk-ONIBBBQ3.mjs → chunk-RWLXRTYP.mjs} +4 -3
  76. package/lib/chunk-TOIVAQF7.mjs +136 -0
  77. package/lib/chunk-V5SKYJUB.mjs +136 -0
  78. package/lib/chunk-WSRETQCA.mjs +59 -0
  79. package/lib/chunk-XA3SNBPA.mjs +184 -0
  80. package/lib/chunk-XVBFFVCJ.mjs +209 -0
  81. package/lib/chunk-YYLIQQKF.mjs +31 -0
  82. package/lib/{chunk-APBWENF6.mjs → chunk-Z6JLYU2J.mjs} +63 -16
  83. package/lib/chunk-ZDMWBSYF.mjs +81 -0
  84. package/lib/clean-github-actions-caches.cjs +291 -148
  85. package/lib/clean-github-actions-caches.mjs +4 -3
  86. package/lib/del-gradle.cjs +63 -15
  87. package/lib/del-gradle.js +2 -1
  88. package/lib/del-gradle.mjs +2 -2
  89. package/lib/del-node-modules.cjs +143 -148
  90. package/lib/del-node-modules.js +210 -14
  91. package/lib/del-node-modules.mjs +149 -18
  92. package/lib/del-ps.cjs +90 -21
  93. package/lib/del-ps.js +3 -2
  94. package/lib/del-ps.mjs +7 -5
  95. package/lib/del-yarn-caches.cjs +87 -18
  96. package/lib/del-yarn-caches.js +38 -3
  97. package/lib/del-yarn-caches.mjs +6 -6
  98. package/lib/find-node-modules-cli.cjs +5 -4
  99. package/lib/find-node-modules-cli.js +2 -1
  100. package/lib/find-node-modules-cli.mjs +2 -2
  101. package/lib/find-node-modules.cjs +4 -3
  102. package/lib/{find-node-modules.d.ts → find-node-modules.d.cts} +1 -1
  103. package/lib/find-node-modules.mjs +2 -2
  104. package/lib/free-chatgpt.cjs +754 -0
  105. package/lib/free-chatgpt.js +51 -0
  106. package/lib/free-chatgpt.mjs +50 -0
  107. package/lib/git/gitattributes.cjs +2 -1
  108. package/lib/git/{gitattributes.d.ts → gitattributes.d.cts} +7 -2
  109. package/lib/git/gitattributes.mjs +2 -2
  110. package/lib/git/line-endings.cjs +298 -64
  111. package/lib/git/line-endings.mjs +4 -4
  112. package/lib/git/normalize.cjs +26 -36
  113. package/lib/git/normalize.mjs +2 -2
  114. package/lib/git/permissions.cjs +77 -11
  115. package/lib/git/permissions.mjs +3 -3
  116. package/lib/git/pull-strategy.cjs +76 -9
  117. package/lib/git/pull-strategy.mjs +3 -3
  118. package/lib/git/undo-commit-cli.cjs +110 -0
  119. package/lib/git/undo-commit-cli.d.ts +1 -0
  120. package/lib/git/undo-commit-cli.js +4 -0
  121. package/lib/git/undo-commit-cli.mjs +14 -0
  122. package/lib/git/undo-commit.cjs +81 -0
  123. package/lib/git/undo-commit.d.cts +1 -0
  124. package/lib/git/undo-commit.mjs +7 -0
  125. package/lib/git/undo-staged-cli.cjs +110 -0
  126. package/lib/git/undo-staged-cli.d.ts +1 -0
  127. package/lib/git/undo-staged-cli.js +4 -0
  128. package/lib/git/undo-staged-cli.mjs +14 -0
  129. package/lib/git/undo-staged.cjs +81 -0
  130. package/lib/git/undo-staged.d.cts +1 -0
  131. package/lib/git/undo-staged.mjs +7 -0
  132. package/lib/git/user-config.cjs +313 -83
  133. package/lib/git/user-config.mjs +4 -4
  134. package/lib/git/utils.cjs +40 -60
  135. package/lib/git/utils.mjs +2 -2
  136. package/lib/git-diff-cli.cjs +857 -0
  137. package/lib/git-diff-cli.js +16 -0
  138. package/lib/git-diff-cli.mjs +17 -0
  139. package/lib/git-diff.cjs +862 -58
  140. package/lib/git-diff.d.ts +38 -83
  141. package/lib/git-diff.js +152 -0
  142. package/lib/git-diff.mjs +23 -85
  143. package/lib/git-fix.cjs +733 -97
  144. package/lib/git-fix.mjs +10 -9
  145. package/lib/git-purge.cjs +64 -16
  146. package/lib/git-purge.d.cts +1 -0
  147. package/lib/git-purge.mjs +43 -37
  148. package/lib/index.cjs +7 -6
  149. package/lib/index.d.ts +1 -1
  150. package/lib/index.js +2 -5
  151. package/lib/index.mjs +4 -4
  152. package/lib/kill-night-crows.cjs +87 -0
  153. package/lib/kill-night-crows.d.mts +1 -0
  154. package/lib/kill-night-crows.mjs +65 -0
  155. package/lib/npm-run-series.cjs +63 -16
  156. package/lib/npm-run-series.mjs +42 -36
  157. package/lib/package-resolutions-updater-cli.cjs +560 -0
  158. package/lib/package-resolutions-updater-cli.d.mts +1 -0
  159. package/lib/package-resolutions-updater-cli.mjs +124 -0
  160. package/lib/package-resolutions-updater.cjs +178 -158
  161. package/lib/package-resolutions-updater.d.mts +32 -1
  162. package/lib/package-resolutions-updater.mjs +17 -338
  163. package/lib/php-cs-fixer-staged.cjs +105 -0
  164. package/lib/php-cs-fixer-staged.d.cts +2 -0
  165. package/lib/php-cs-fixer-staged.mjs +117 -0
  166. package/lib/print-directory-tree.cjs +320 -207
  167. package/lib/print-directory-tree.mjs +3 -3
  168. package/lib/ps/connected-domain.cjs +25 -2
  169. package/lib/ps/connected-domain.d.ts +10 -2
  170. package/lib/ps/connected-domain.js +5 -2
  171. package/lib/ps/connected-domain.mjs +8 -4
  172. package/lib/ps/index.cjs +345 -322
  173. package/lib/ps/index.d.mjs +1 -1
  174. package/lib/ps/index.js +2 -1
  175. package/lib/ps/index.mjs +179 -182
  176. package/lib/ps/isWin.cjs +24 -1
  177. package/lib/ps/isWin.d.ts +1 -1
  178. package/lib/ps/isWin.js +3 -1
  179. package/lib/ps/isWin.mjs +8 -4
  180. package/lib/ps/table-parser.cjs +167 -159
  181. package/lib/ps/table-parser.d.ts +5 -0
  182. package/lib/ps/table-parser.js +10 -4
  183. package/lib/ps/table-parser.mjs +9 -5
  184. package/lib/remove-module.cjs +310 -0
  185. package/lib/remove-module.d.mts +1 -0
  186. package/lib/remove-module.mjs +111 -0
  187. package/lib/rmpath.cjs +322 -0
  188. package/lib/rmpath.d.mts +3 -0
  189. package/lib/rmpath.mjs +108 -0
  190. package/lib/submodule-install.cjs +311 -86
  191. package/lib/submodule-install.mjs +53 -5
  192. package/lib/submodule-remove-cli.cjs +107 -0
  193. package/lib/submodule-remove-cli.d.ts +1 -0
  194. package/lib/submodule-remove-cli.js +31 -0
  195. package/lib/submodule-remove-cli.mjs +28 -0
  196. package/lib/submodule-remove.cjs +46 -0
  197. package/lib/submodule-remove.d.cts +2 -0
  198. package/lib/submodule-remove.mjs +6 -0
  199. package/lib/utils/chatgpt.cjs +541 -0
  200. package/lib/utils/chatgpt.d.ts +31 -0
  201. package/lib/utils/chatgpt.js +708 -0
  202. package/lib/utils/chatgpt.mjs +8 -0
  203. package/lib/utils/findEnvFiles.cjs +107 -0
  204. package/lib/utils/findEnvFiles.d.ts +8 -0
  205. package/lib/utils/findEnvFiles.js +121 -0
  206. package/lib/utils/findEnvFiles.mjs +8 -0
  207. package/lib/utils/findWorkspaceRoot.cjs +70 -0
  208. package/lib/utils/findWorkspaceRoot.d.ts +9 -0
  209. package/lib/utils/findWorkspaceRoot.js +57 -0
  210. package/lib/utils/findWorkspaceRoot.mjs +40 -0
  211. package/lib/{utils.cjs → utils/index.cjs} +61 -14
  212. package/lib/{utils.mjs → utils/index.mjs} +2 -2
  213. package/lib/utils/isGithubTokenValid.cjs +64 -0
  214. package/lib/utils/isGithubTokenValid.d.ts +7 -0
  215. package/lib/utils/isGithubTokenValid.js +48 -0
  216. package/lib/utils/isGithubTokenValid.mjs +36 -0
  217. package/lib/yarn-reinstall.cjs +220 -38
  218. package/lib/yarn-reinstall.mjs +2 -2
  219. package/package.json +138 -104
  220. package/readme.md +48 -75
  221. package/releases/readme.md +36 -0
  222. package/requirements.txt +1 -0
  223. package/test/README.md +101 -0
  224. package/test/package.json +2 -1
  225. package/test-project/readme.md +26 -0
  226. package/tmp/test-repo/README.md +35 -0
  227. package/tmp/test-repo/package.json +1 -1
  228. package/tmp/typedoc/readme.md +320 -0
  229. package/bin/bash-dummy +0 -56
  230. package/bin/bash-dummy.cmd +0 -25
  231. package/bin/dir-tree.cmd +0 -7
  232. package/bin/git-diff +0 -4
  233. package/bin/git-diff.cmd +0 -7
  234. package/bin/git-fix +0 -36
  235. package/bin/git-fix.cmd +0 -7
  236. package/bin/rmpath +0 -70
  237. package/bin/submodule-install.txt +0 -118
  238. package/bin/submodule-remove +0 -46
  239. package/bin/submodule.txt +0 -172
  240. package/lib/binary-collections-config.d.mts +0 -18
  241. package/lib/binary-collections-config.js +0 -39
  242. package/lib/binary-collections.d.mts +0 -137
  243. package/lib/binary-collections.d.ts +0 -137
  244. package/lib/changelog.d.mts +0 -2
  245. package/lib/changelog.js +0 -226
  246. package/lib/chunk-DPKAJKFO.mjs +0 -171
  247. package/lib/chunk-G3THLIDT.mjs +0 -200
  248. package/lib/chunk-W3ENOM53.mjs +0 -18
  249. package/lib/clean-github-actions-caches.d.mts +0 -169
  250. package/lib/clean-github-actions-caches.d.ts +0 -169
  251. package/lib/del-gradle.d.mts +0 -2
  252. package/lib/del-node-modules.d.mts +0 -2
  253. package/lib/del-ps.d.mts +0 -2
  254. package/lib/del-yarn-caches.d.mts +0 -2
  255. package/lib/find-node-modules-cli.d.mts +0 -1
  256. package/lib/find-node-modules.d.mts +0 -13
  257. package/lib/find-node-modules.js +0 -53
  258. package/lib/git/gitattributes.d.mts +0 -35
  259. package/lib/git/gitattributes.js +0 -223
  260. package/lib/git/line-endings.d.mts +0 -83
  261. package/lib/git/line-endings.d.ts +0 -83
  262. package/lib/git/normalize.d.mts +0 -43
  263. package/lib/git/normalize.d.ts +0 -43
  264. package/lib/git/permissions.d.mts +0 -17
  265. package/lib/git/permissions.d.ts +0 -17
  266. package/lib/git/pull-strategy.d.mts +0 -15
  267. package/lib/git/pull-strategy.d.ts +0 -15
  268. package/lib/git/user-config.d.mts +0 -105
  269. package/lib/git/user-config.d.ts +0 -105
  270. package/lib/git/utils.d.mts +0 -69
  271. package/lib/git/utils.d.ts +0 -69
  272. package/lib/git-diff.d.mts +0 -84
  273. package/lib/git-fix.d.mts +0 -141
  274. package/lib/git-fix.d.ts +0 -141
  275. package/lib/git-purge.d.mts +0 -2
  276. package/lib/git-purge.js +0 -59
  277. package/lib/index.d.mts +0 -1
  278. package/lib/npm-run-series.d.mts +0 -1
  279. package/lib/npm-run-series.js +0 -86
  280. package/lib/package-resolutions-updater.d.ts +0 -352
  281. package/lib/print-directory-tree.d.mts +0 -234
  282. package/lib/print-directory-tree.d.ts +0 -234
  283. package/lib/ps/connected-domain.d.mts +0 -3
  284. package/lib/ps/index.d.d.mts +0 -26
  285. package/lib/ps/index.d.d.ts +0 -26
  286. package/lib/ps/index.d.mts +0 -26
  287. package/lib/ps/isWin.d.mts +0 -3
  288. package/lib/ps/table-parser.d.mts +0 -3
  289. package/lib/submodule-install.d.mts +0 -121
  290. package/lib/submodule-install.d.ts +0 -121
  291. package/lib/utils.d.mts +0 -40
  292. package/lib/utils.js +0 -181
  293. package/lib/yarn-reinstall.d.mts +0 -49
  294. package/lib/yarn-reinstall.d.ts +0 -49
  295. package/src/package-resolutions-updater.mjs +0 -350
  296. package/src/print-directory-tree.cjs +0 -234
  297. package/src/ps/index.js +0 -286
  298. package/src/yarn-reinstall.cjs +0 -49
  299. /package/{bin → binaries}/nodekill +0 -0
  300. /package/{bin → binaries}/nodekill.cmd +0 -0
  301. /package/lib/{binary-collections-config.d.ts → binary-collections-config.d.cts} +0 -0
  302. /package/lib/{changelog.d.ts → changelog.d.cts} +0 -0
  303. /package/lib/{git-purge.d.ts → free-chatgpt.d.ts} +0 -0
  304. /package/lib/{git-diff.d.cts → git-diff-cli.d.ts} +0 -0
  305. /package/lib/{npm-run-series.d.ts → npm-run-series.d.cts} +0 -0
  306. /package/lib/{utils.d.ts → utils/index.d.cts} +0 -0
@@ -1,101 +1,326 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- const { spawnSync } = require("child_process");
4
- const fs = require("fs");
5
- const path = require("path");
6
- const dotenv = require("dotenv");
7
- // Load .env using dotenv from process.cwd()
8
- const envPath = path.resolve(process.cwd(), ".env");
9
- if (fs.existsSync(envPath))
10
- dotenv.config({ path: envPath });
11
- const { getArgs } = require("./utils.js");
12
- const args = getArgs();
13
- const positional = args._ || [];
14
- const ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
15
- let ROOT = runGit(["rev-parse", "--show-toplevel"]).trim();
16
- let REPO_PATH = ROOT;
17
- if (args.cwd) {
18
- ROOT = path.resolve(args.cwd);
19
- }
20
- else if (positional.length > 0) {
21
- ROOT = path.resolve(positional[0]);
22
- }
23
- console.log(`Installing submodules at ${ROOT}`);
24
- // Get submodule paths
25
- const submoduleList = runGit([
26
- "-C",
27
- REPO_PATH,
28
- "config",
29
- "-f",
30
- ".gitmodules",
31
- "--get-regexp",
32
- "^submodule\\..*\\.path$"
33
- ])
34
- .split("\n")
35
- .filter(Boolean);
36
- for (const line of submoduleList) {
37
- const [KEY, MODULE_PATH] = line.trim().split(/\s+/);
38
- const RELATIVE_MODULE_PATH = path.join(ROOT, MODULE_PATH);
39
- if (fs.existsSync(RELATIVE_MODULE_PATH)) {
40
- console.log(`Deleting ${RELATIVE_MODULE_PATH}`);
41
- fs.rmSync(RELATIVE_MODULE_PATH, { recursive: true, force: true });
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __esm = (fn, res) => function __init() {
4
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
5
+ };
6
+ var __commonJS = (cb, mod) => function __require() {
7
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
8
+ };
9
+
10
+ // node_modules/tsup/assets/cjs_shims.js
11
+ var init_cjs_shims = __esm({
12
+ "node_modules/tsup/assets/cjs_shims.js"() {
13
+ }
14
+ });
15
+
16
+ // src/utils/index.cjs
17
+ var require_utils = __commonJS({
18
+ "src/utils/index.cjs"(exports2, module2) {
19
+ init_cjs_shims();
20
+ var fs2 = require("fs");
21
+ var path2 = require("upath");
22
+ var argv = require("minimist")(process.argv.slice(2));
23
+ var { exec } = require("child_process");
24
+ var { URL: URL2 } = require("url");
25
+ var { promisify } = require("util");
26
+ var execAsync = promisify(exec);
27
+ async function parseGitRemotes() {
28
+ try {
29
+ const { stdout } = await execAsync("git remote -v");
30
+ const lines = stdout.split("\n");
31
+ const remotes = {};
32
+ lines.forEach((line) => {
33
+ const [name, url] = line.split(" ");
34
+ if (name && url) {
35
+ const [repoUrl] = url.split(" ");
36
+ try {
37
+ const parsedUrl = new URL2(repoUrl);
38
+ const pathParts = parsedUrl.pathname.split("/").filter(Boolean);
39
+ if (parsedUrl.hostname === "github.com" && pathParts.length === 2) {
40
+ let repoPath = pathParts.join("/");
41
+ if (repoPath.endsWith(".git")) {
42
+ repoPath = repoPath.slice(0, -4);
43
+ }
44
+ remotes[name] = repoPath;
45
+ }
46
+ } catch (e) {
47
+ console.error("URL Parsing Error:", e.message);
48
+ }
49
+ }
50
+ });
51
+ return remotes;
52
+ } catch (error) {
53
+ console.error("Error:", error.message);
54
+ return {};
55
+ }
42
56
  }
43
- const NAME = KEY.match(/^submodule\.(.*)\.path$/)[1];
44
- const URL = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.url`]).trim();
45
- let BRANCH = "master";
46
- try {
47
- BRANCH = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.branch`]).trim();
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);
62
+ }
63
+ return fullPath;
48
64
  }
49
- catch (_a) {
50
- // silently ignore if branch is not set
65
+ module2.exports.joinPathPreserveDriveLetter = joinPathPreserveDriveLetter;
66
+ function getArgs2() {
67
+ return argv;
51
68
  }
52
- const addResult = runGit(["-C", REPO_PATH, "submodule", "add", "--force", "-b", BRANCH, "--name", NAME, URL, MODULE_PATH], true);
53
- if (addResult.status !== 0) {
54
- console.warn(`Cannot add submodule ${MODULE_PATH}`);
55
- continue;
56
- }
57
- const GIT_MODULES = path.join(RELATIVE_MODULE_PATH, ".gitmodules");
58
- if (ACCESS_TOKEN) {
59
- let URL_WITH_TOKEN = "";
60
- let repoInfo;
61
- if (URL.includes("github.com")) {
62
- repoInfo = URL.replace("https://github.com/", "");
63
- URL_WITH_TOKEN = `https://${ACCESS_TOKEN}@github.com/${repoInfo}`;
69
+ module2.exports.getArgs = getArgs2;
70
+ function del(fullPath) {
71
+ try {
72
+ if (!fs2.existsSync(fullPath)) return;
73
+ const stat = fs2.lstatSync(fullPath);
74
+ if (stat.isSymbolicLink()) {
75
+ try {
76
+ fs2.unlinkSync(fullPath);
77
+ console.log("deleted symlink", fullPath);
78
+ } catch (e) {
79
+ console.log("failed delete symlink", fullPath, e && e.message);
80
+ }
81
+ return;
64
82
  }
65
- else if (URL.includes("gitlab.com") && typeof process.env.GITLAB_TOKEN === "string") {
66
- repoInfo = URL.replace("https://gitlab.com/", "");
67
- URL_WITH_TOKEN = `https://oauth2:${ACCESS_TOKEN}@gitlab.com/${repoInfo}`;
83
+ if (stat.isDirectory()) {
84
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
85
+ for (let i = 0; i < subdir.length; i++) {
86
+ del(subdir[i]);
87
+ }
88
+ try {
89
+ fs2.rmdirSync(fullPath);
90
+ console.log("deleted", fullPath);
91
+ } catch (e) {
92
+ try {
93
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
94
+ console.log("deleted", fullPath);
95
+ } catch (ee) {
96
+ console.log("failed delete", fullPath, ee && ee.message);
97
+ }
98
+ }
99
+ return;
68
100
  }
69
- else {
70
- // For other Git providers, try a generic approach
71
- const urlObj = new URL(URL);
72
- repoInfo = urlObj.pathname.substring(1); // Remove leading slash
73
- URL_WITH_TOKEN = `${urlObj.protocol}//${ACCESS_TOKEN}@${urlObj.host}${urlObj.pathname}`;
101
+ try {
102
+ fs2.unlinkSync(fullPath);
103
+ console.log("deleted", fullPath);
104
+ } catch (e) {
105
+ try {
106
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
107
+ console.log("deleted", fullPath);
108
+ } catch (ee) {
109
+ console.log("failed delete", fullPath, ee && ee.message);
110
+ }
74
111
  }
75
- if (URL_WITH_TOKEN && URL_WITH_TOKEN.length > 0) {
76
- console.log(`Apply token for ${repoInfo} at ${MODULE_PATH} branch ${BRANCH}`);
77
- runGit(["-C", RELATIVE_MODULE_PATH, "remote", "set-url", "origin", URL_WITH_TOKEN]);
112
+ } catch (err) {
113
+ console.log("failed delete", fullPath, err && err.message);
114
+ }
115
+ }
116
+ module2.exports.del = del;
117
+ function delStream(globStream) {
118
+ globStream.stream().on("data", (result) => {
119
+ const fullPath = path2.resolve(process.cwd(), result);
120
+ try {
121
+ if (fs2.existsSync(fullPath)) {
122
+ const stat = fs2.lstatSync(fullPath);
123
+ if (stat.isSymbolicLink()) {
124
+ try {
125
+ fs2.unlinkSync(fullPath);
126
+ console.log("deleted symlink", fullPath);
127
+ } catch (e) {
128
+ console.log("failed delete symlink", fullPath, e && e.message);
129
+ }
130
+ return;
131
+ }
132
+ if (stat.isDirectory()) {
133
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
134
+ for (let i = 0; i < subdir.length; i++) {
135
+ del(subdir[i]);
136
+ }
137
+ }
138
+ }
139
+ del(fullPath);
140
+ } catch (err) {
141
+ console.log("failed processing", fullPath, err && err.message);
78
142
  }
143
+ });
79
144
  }
80
- runGit(["-C", RELATIVE_MODULE_PATH, "fetch", "--all"]);
81
- runGit(["-C", RELATIVE_MODULE_PATH, "pull", "origin", BRANCH, "-X", "theirs"]);
82
- if (fs.existsSync(GIT_MODULES)) {
83
- console.log(`${MODULE_PATH} has submodules`);
84
- const result = spawnSync("node", [__filename, "-cwd", RELATIVE_MODULE_PATH], { stdio: "inherit" });
85
- if (result.status !== 0) {
86
- console.error(`Recursive submodule failed for ${RELATIVE_MODULE_PATH}`);
87
- process.exit(result.status);
145
+ module2.exports.delStream = delStream;
146
+ function getFileTreeString(hashArray) {
147
+ const tree = {};
148
+ const hashMap = {};
149
+ for (const entry of hashArray) {
150
+ const [filePath, hash] = entry.split(" ");
151
+ hashMap[filePath] = hash;
152
+ const parts = filePath.split("/");
153
+ let current = tree;
154
+ for (let i = 0; i < parts.length; i++) {
155
+ const part = parts[i];
156
+ if (i === parts.length - 1) {
157
+ current[part] = null;
158
+ } else {
159
+ current[part] = current[part] || {};
160
+ current = current[part];
161
+ }
88
162
  }
163
+ }
164
+ function printNode(node, prefix = "", parentPath = "") {
165
+ const keys = Object.keys(node).sort();
166
+ let lines = [];
167
+ keys.forEach((key, idx) => {
168
+ const isLast = idx === keys.length - 1;
169
+ const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
170
+ const currentPath = parentPath ? parentPath + "/" + key : key;
171
+ if (node[key] === null) {
172
+ lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
173
+ } else {
174
+ lines.push(prefix + branch + key + "/");
175
+ lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
176
+ }
177
+ });
178
+ return lines;
179
+ }
180
+ return printNode(tree, "", "").join("\n");
89
181
  }
182
+ module2.exports.getFileTreeString = getFileTreeString;
183
+ var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
184
+ module2.exports.delay = delay;
185
+ }
186
+ });
187
+
188
+ // src/submodule-install.cjs
189
+ init_cjs_shims();
190
+ var { spawnSync } = require("child_process");
191
+ var color = require("ansi-colors");
192
+ var fs = require("fs");
193
+ var path = require("path");
194
+ var dotenv = require("dotenv");
195
+ var envPath = path.resolve(process.cwd(), ".env");
196
+ if (fs.existsSync(envPath)) dotenv.config({ path: envPath, override: true, quiet: true });
197
+ var { getArgs } = require_utils();
198
+ var args = getArgs();
199
+ var positional = args._ || [];
200
+ if (args.help || args.h) {
201
+ console.log();
202
+ console.log("Usage: submodule-install [options] [repo-path]");
203
+ console.log();
204
+ console.log("Options:");
205
+ console.log(" --cwd <path> Set working directory");
206
+ console.log(" --help, -h Show this help message");
207
+ console.log();
208
+ console.log("Description:");
209
+ console.log(" Installs and updates git submodules recursively, applying access tokens for private repos.");
210
+ console.log();
211
+ process.exit(0);
90
212
  }
91
- runGit(["-C", REPO_PATH, "submodule", "update", "--init", "--recursive"]);
92
- // ----------- Helper Functions -----------
93
- function runGit(args, returnResult = false) {
94
- const result = spawnSync("git", args, { encoding: "utf-8" });
95
- if (returnResult)
96
- return result;
213
+ var ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
214
+ var ROOT = runGit(["rev-parse", "--show-toplevel"]).trim();
215
+ var REPO_PATH = ROOT;
216
+ if (args.cwd) {
217
+ ROOT = path.resolve(args.cwd);
218
+ } else if (positional.length > 0) {
219
+ ROOT = path.resolve(positional[0]);
220
+ }
221
+ var CURRENT_PATH = ROOT;
222
+ var VISITED_SUBMODULES = (process.env.VISITED_SUBMODULES || "").split(path.delimiter).filter(Boolean);
223
+ if (VISITED_SUBMODULES.includes(CURRENT_PATH)) {
224
+ console.log(`Skipping ${CURRENT_PATH} (already processed) to avoid recursion.`);
225
+ process.exit(0);
226
+ }
227
+ VISITED_SUBMODULES.push(CURRENT_PATH);
228
+ process.env.VISITED_SUBMODULES = VISITED_SUBMODULES.join(path.delimiter);
229
+ 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);
239
+ for (const line of submoduleList) {
240
+ const [KEY, MODULE_PATH] = line.trim().split(/\s+/);
241
+ const RELATIVE_MODULE_PATH = path.join(ROOT, MODULE_PATH);
242
+ if (fs.existsSync(RELATIVE_MODULE_PATH)) {
243
+ console.log(`Deleting ${RELATIVE_MODULE_PATH}`);
244
+ fs.rmSync(RELATIVE_MODULE_PATH, { recursive: true, force: true });
245
+ }
246
+ const NAME = KEY.match(/^submodule\.(.*)\.path$/)[1];
247
+ const URL2 = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.url`]).trim();
248
+ let BRANCH = "master";
249
+ try {
250
+ BRANCH = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.branch`]).trim();
251
+ } catch {
252
+ }
253
+ console.log(`Submodule: ${color.cyan(NAME)}`);
254
+ console.log(` Location: ${color.magenta(MODULE_PATH)}`);
255
+ console.log(` ROOT: ${color.yellow(ROOT)}`);
256
+ console.log(` URL: ${color.blue(URL2)}`);
257
+ console.log(` Branch: ${color.green(BRANCH)}`);
258
+ const addResult = runGit(
259
+ ["-C", REPO_PATH, "submodule", "add", "--force", "-b", BRANCH, "--name", NAME, URL2, MODULE_PATH],
260
+ true
261
+ );
262
+ if (addResult.status !== 0) {
263
+ console.warn(`Cannot add submodule ${MODULE_PATH}`);
264
+ continue;
265
+ }
266
+ if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
267
+ console.warn(`Submodule directory ${RELATIVE_MODULE_PATH} does not exist after add. Attempting manual clone...`);
268
+ try {
269
+ runGit(["clone", "--branch", BRANCH, URL2, RELATIVE_MODULE_PATH]);
270
+ } catch (e) {
271
+ console.error(`Manual clone failed for ${RELATIVE_MODULE_PATH}: ${e.message}`);
272
+ continue;
273
+ }
274
+ if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
275
+ console.error(`Submodule directory ${RELATIVE_MODULE_PATH} still does not exist after manual clone. Skipping.`);
276
+ continue;
277
+ }
278
+ }
279
+ const GIT_MODULES = path.join(RELATIVE_MODULE_PATH, ".gitmodules");
280
+ if (ACCESS_TOKEN) {
281
+ let URL_WITH_TOKEN;
282
+ let repoInfo;
283
+ if (URL2.includes("github.com")) {
284
+ repoInfo = URL2.replace("https://github.com/", "");
285
+ URL_WITH_TOKEN = `https://${ACCESS_TOKEN}@github.com/${repoInfo}`;
286
+ } else if (URL2.includes("gitlab.com") && typeof process.env.GITLAB_TOKEN === "string") {
287
+ repoInfo = URL2.replace("https://gitlab.com/", "");
288
+ URL_WITH_TOKEN = `https://oauth2:${ACCESS_TOKEN}@gitlab.com/${repoInfo}`;
289
+ } else {
290
+ const urlObj = new URL2(URL2);
291
+ repoInfo = urlObj.pathname.substring(1);
292
+ URL_WITH_TOKEN = `${urlObj.protocol}//${ACCESS_TOKEN}@${urlObj.host}${urlObj.pathname}`;
293
+ }
294
+ if (URL_WITH_TOKEN && URL_WITH_TOKEN.length > 0) {
295
+ console.log(`Apply token for ${repoInfo} at ${MODULE_PATH} branch ${BRANCH}`);
296
+ runGit(["-C", RELATIVE_MODULE_PATH, "remote", "set-url", "origin", URL_WITH_TOKEN]);
297
+ }
298
+ }
299
+ runGit(["-C", RELATIVE_MODULE_PATH, "fetch", "--all"]);
300
+ 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
+ });
97
311
  if (result.status !== 0) {
98
- throw new Error(result.stderr || `git ${args.join(" ")} failed`);
312
+ console.error(`Recursive submodule failed for ${RELATIVE_MODULE_PATH}`);
313
+ process.exit(result.status);
99
314
  }
100
- return result.stdout || "";
315
+ }
316
+ }
317
+ runGit(["-C", REPO_PATH, "submodule", "update", "--init", "--recursive"]);
318
+ function runGit(args2, returnResult = false) {
319
+ console.log(`Executing: git ${args2.join(" ")}`);
320
+ const result = spawnSync("git", args2, { encoding: "utf-8" });
321
+ if (returnResult) return result;
322
+ if (result.status !== 0) {
323
+ throw new Error(result.stderr || `git ${args2.join(" ")} failed`);
324
+ }
325
+ return result.stdout || "";
101
326
  }
@@ -2,27 +2,41 @@
2
2
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
3
  import {
4
4
  require_utils
5
- } from "./chunk-APBWENF6.mjs";
5
+ } from "./chunk-Z6JLYU2J.mjs";
6
6
  import {
7
7
  __commonJS,
8
8
  __filename,
9
9
  __require,
10
10
  init_esm_shims
11
- } from "./chunk-AASHBCRW.mjs";
11
+ } from "./chunk-QQ4A6DLD.mjs";
12
12
 
13
13
  // src/submodule-install.cjs
14
14
  var require_submodule_install = __commonJS({
15
15
  "src/submodule-install.cjs"() {
16
16
  init_esm_shims();
17
17
  var { spawnSync } = __require("child_process");
18
+ var color = __require("ansi-colors");
18
19
  var fs = __require("fs");
19
20
  var path = __require("path");
20
21
  var dotenv = __require("dotenv");
21
22
  var envPath = path.resolve(process.cwd(), ".env");
22
- if (fs.existsSync(envPath)) dotenv.config({ path: envPath });
23
+ if (fs.existsSync(envPath)) dotenv.config({ path: envPath, override: true, quiet: true });
23
24
  var { getArgs } = require_utils();
24
25
  var args = getArgs();
25
26
  var positional = args._ || [];
27
+ if (args.help || args.h) {
28
+ console.log();
29
+ console.log("Usage: submodule-install [options] [repo-path]");
30
+ console.log();
31
+ console.log("Options:");
32
+ console.log(" --cwd <path> Set working directory");
33
+ console.log(" --help, -h Show this help message");
34
+ console.log();
35
+ console.log("Description:");
36
+ console.log(" Installs and updates git submodules recursively, applying access tokens for private repos.");
37
+ console.log();
38
+ process.exit(0);
39
+ }
26
40
  var ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
27
41
  var ROOT = runGit(["rev-parse", "--show-toplevel"]).trim();
28
42
  var REPO_PATH = ROOT;
@@ -31,6 +45,14 @@ var require_submodule_install = __commonJS({
31
45
  } else if (positional.length > 0) {
32
46
  ROOT = path.resolve(positional[0]);
33
47
  }
48
+ var CURRENT_PATH = ROOT;
49
+ var VISITED_SUBMODULES = (process.env.VISITED_SUBMODULES || "").split(path.delimiter).filter(Boolean);
50
+ if (VISITED_SUBMODULES.includes(CURRENT_PATH)) {
51
+ console.log(`Skipping ${CURRENT_PATH} (already processed) to avoid recursion.`);
52
+ process.exit(0);
53
+ }
54
+ VISITED_SUBMODULES.push(CURRENT_PATH);
55
+ process.env.VISITED_SUBMODULES = VISITED_SUBMODULES.join(path.delimiter);
34
56
  console.log(`Installing submodules at ${ROOT}`);
35
57
  var submoduleList = runGit([
36
58
  "-C",
@@ -55,6 +77,11 @@ var require_submodule_install = __commonJS({
55
77
  BRANCH = runGit(["config", "-f", ".gitmodules", "--get", `submodule.${NAME}.branch`]).trim();
56
78
  } catch {
57
79
  }
80
+ console.log(`Submodule: ${color.cyan(NAME)}`);
81
+ console.log(` Location: ${color.magenta(MODULE_PATH)}`);
82
+ console.log(` ROOT: ${color.yellow(ROOT)}`);
83
+ console.log(` URL: ${color.blue(URL)}`);
84
+ console.log(` Branch: ${color.green(BRANCH)}`);
58
85
  const addResult = runGit(
59
86
  ["-C", REPO_PATH, "submodule", "add", "--force", "-b", BRANCH, "--name", NAME, URL, MODULE_PATH],
60
87
  true
@@ -63,9 +90,22 @@ var require_submodule_install = __commonJS({
63
90
  console.warn(`Cannot add submodule ${MODULE_PATH}`);
64
91
  continue;
65
92
  }
93
+ if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
94
+ console.warn(`Submodule directory ${RELATIVE_MODULE_PATH} does not exist after add. Attempting manual clone...`);
95
+ try {
96
+ runGit(["clone", "--branch", BRANCH, URL, RELATIVE_MODULE_PATH]);
97
+ } catch (e) {
98
+ console.error(`Manual clone failed for ${RELATIVE_MODULE_PATH}: ${e.message}`);
99
+ continue;
100
+ }
101
+ if (!fs.existsSync(RELATIVE_MODULE_PATH)) {
102
+ console.error(`Submodule directory ${RELATIVE_MODULE_PATH} still does not exist after manual clone. Skipping.`);
103
+ continue;
104
+ }
105
+ }
66
106
  const GIT_MODULES = path.join(RELATIVE_MODULE_PATH, ".gitmodules");
67
107
  if (ACCESS_TOKEN) {
68
- let URL_WITH_TOKEN = "";
108
+ let URL_WITH_TOKEN;
69
109
  let repoInfo;
70
110
  if (URL.includes("github.com")) {
71
111
  repoInfo = URL.replace("https://github.com/", "");
@@ -87,7 +127,14 @@ var require_submodule_install = __commonJS({
87
127
  runGit(["-C", RELATIVE_MODULE_PATH, "pull", "origin", BRANCH, "-X", "theirs"]);
88
128
  if (fs.existsSync(GIT_MODULES)) {
89
129
  console.log(`${MODULE_PATH} has submodules`);
90
- const result = spawnSync("node", [__filename, "-cwd", RELATIVE_MODULE_PATH], { stdio: "inherit" });
130
+ const env = Object.assign({}, process.env, {
131
+ VISITED_SUBMODULES: process.env.VISITED_SUBMODULES + path.delimiter + path.resolve(RELATIVE_MODULE_PATH)
132
+ });
133
+ const result = spawnSync("node", [__filename, "-cwd", RELATIVE_MODULE_PATH], {
134
+ stdio: "inherit",
135
+ env,
136
+ cwd: RELATIVE_MODULE_PATH
137
+ });
91
138
  if (result.status !== 0) {
92
139
  console.error(`Recursive submodule failed for ${RELATIVE_MODULE_PATH}`);
93
140
  process.exit(result.status);
@@ -96,6 +143,7 @@ var require_submodule_install = __commonJS({
96
143
  }
97
144
  runGit(["-C", REPO_PATH, "submodule", "update", "--init", "--recursive"]);
98
145
  function runGit(args2, returnResult = false) {
146
+ console.log(`Executing: git ${args2.join(" ")}`);
99
147
  const result = spawnSync("git", args2, { encoding: "utf-8" });
100
148
  if (returnResult) return result;
101
149
  if (result.status !== 0) {
@@ -0,0 +1,107 @@
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/submodule-remove.cjs
38
+ var require_submodule_remove = __commonJS({
39
+ "src/submodule-remove.cjs"(exports2, module2) {
40
+ init_cjs_shims();
41
+ var { spawnAsync } = require("cross-spawn");
42
+ var path2 = require("upath");
43
+ var fs2 = require("fs-extra");
44
+ var dotenv = require("dotenv");
45
+ var envPath = path2.resolve(process.cwd(), ".env");
46
+ if (fs2.existsSync(envPath)) {
47
+ dotenv.config({ path: envPath, override: true, quiet: true });
48
+ }
49
+ async function removeSubmodule2(submodulePath2) {
50
+ try {
51
+ await spawnAsync("git", ["submodule", "deinit", "-f", submodulePath2], { stdio: "inherit" });
52
+ } catch (error) {
53
+ console.warn(`Warning: Could not deinitialize submodule "${submodulePath2}". It may not exist.`);
54
+ console.warn(error.message);
55
+ }
56
+ try {
57
+ await spawnAsync("git", ["config", "--remove-section", `submodule.${submodulePath2}`], { stdio: "inherit" });
58
+ } catch (error) {
59
+ console.warn(`Warning: Could not remove git config section for submodule "${submodulePath2}". It may not exist.`);
60
+ console.warn(error.message);
61
+ }
62
+ const gitModulesPath = path2.resolve(".git", "modules", submodulePath2);
63
+ if (fs2.existsSync(gitModulesPath)) {
64
+ fs2.rmSync(gitModulesPath, { recursive: true, force: true });
65
+ console.log(`Removed .git/modules entry for submodule "${submodulePath2}".`);
66
+ } else {
67
+ console.warn(`Warning: The path "${gitModulesPath}" does not exist. Skipping removal of .git/modules entry.`);
68
+ }
69
+ const gitmodulesPath = path2.resolve(".gitmodules");
70
+ if (fs2.existsSync(gitmodulesPath)) {
71
+ let gitmodulesContent = fs2.readFileSync(gitmodulesPath, "utf-8");
72
+ const submoduleSectionRegex = new RegExp(
73
+ `\\[submodule "${submodulePath2.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&")}"]([\\s\\S]*?)(?=\\[|$)`,
74
+ "g"
75
+ );
76
+ gitmodulesContent = gitmodulesContent.replace(submoduleSectionRegex, "").trim();
77
+ fs2.writeFileSync(gitmodulesPath, gitmodulesContent);
78
+ console.log(`Removed submodule "${submodulePath2}" from .gitmodules.`);
79
+ } else {
80
+ console.warn(`Warning: The .gitmodules file does not exist. Skipping removal of submodule "${submodulePath2}".`);
81
+ }
82
+ fs2.rmSync(path2.resolve(submodulePath2), { recursive: true, force: true });
83
+ console.log(`Submodule "${submodulePath2}" has been removed.`);
84
+ }
85
+ module2.exports = removeSubmodule2;
86
+ }
87
+ });
88
+
89
+ // src/submodule-remove-cli.js
90
+ init_cjs_shims();
91
+ var import_fs_extra = __toESM(require("fs-extra"), 1);
92
+ var import_minimist = __toESM(require("minimist"), 1);
93
+ var import_upath = __toESM(require("upath"), 1);
94
+ var import_submodule_remove = __toESM(require_submodule_remove(), 1);
95
+ var args = (0, import_minimist.default)(process.argv.slice(2));
96
+ var submodulePath = args._[0];
97
+ if (!submodulePath) {
98
+ console.error("Usage: node submodule-remove.cjs <submodule-path>");
99
+ process.exit(1);
100
+ }
101
+ if (!import_fs_extra.default.existsSync(import_upath.default.resolve(submodulePath))) {
102
+ console.error(`Error: The path "${submodulePath}" does not exist.`);
103
+ process.exit(1);
104
+ }
105
+ (async () => {
106
+ await (0, import_submodule_remove.default)(submodulePath);
107
+ })();
@@ -0,0 +1 @@
1
+ export {};