grf-cli 1.0.2 → 1.0.4

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 (382) hide show
  1. package/README.md +15 -7
  2. package/README.zh-CN.md +15 -7
  3. package/dist/cli.js +2 -14
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add/display.d.ts +10 -0
  6. package/dist/commands/add/display.d.ts.map +1 -0
  7. package/dist/commands/add/display.js +25 -0
  8. package/dist/commands/add/display.js.map +1 -0
  9. package/dist/commands/add/helpers.d.ts +11 -0
  10. package/dist/commands/add/helpers.d.ts.map +1 -0
  11. package/dist/commands/add/helpers.js +59 -0
  12. package/dist/commands/add/helpers.js.map +1 -0
  13. package/dist/commands/add/index.d.ts +12 -0
  14. package/dist/commands/add/index.d.ts.map +1 -0
  15. package/dist/commands/add/index.js +57 -0
  16. package/dist/commands/add/index.js.map +1 -0
  17. package/dist/commands/add/types.d.ts +32 -0
  18. package/dist/commands/add/types.d.ts.map +1 -0
  19. package/dist/commands/add/types.js +6 -0
  20. package/dist/commands/add/types.js.map +1 -0
  21. package/dist/commands/add.d.ts +5 -0
  22. package/dist/commands/add.d.ts.map +1 -1
  23. package/dist/commands/add.js +21 -21
  24. package/dist/commands/add.js.map +1 -1
  25. package/dist/commands/clean/display.d.ts +30 -0
  26. package/dist/commands/clean/display.d.ts.map +1 -0
  27. package/dist/commands/clean/display.js +67 -0
  28. package/dist/commands/clean/display.js.map +1 -0
  29. package/dist/commands/clean/handlers/clean-all.d.ts +12 -0
  30. package/dist/commands/clean/handlers/clean-all.d.ts.map +1 -0
  31. package/dist/commands/clean/handlers/clean-all.js +43 -0
  32. package/dist/commands/clean/handlers/clean-all.js.map +1 -0
  33. package/dist/commands/clean/handlers/clean-single.d.ts +13 -0
  34. package/dist/commands/clean/handlers/clean-single.d.ts.map +1 -0
  35. package/dist/commands/clean/handlers/clean-single.js +78 -0
  36. package/dist/commands/clean/handlers/clean-single.js.map +1 -0
  37. package/dist/commands/clean/handlers/index.d.ts +6 -0
  38. package/dist/commands/clean/handlers/index.d.ts.map +1 -0
  39. package/dist/commands/clean/handlers/index.js +11 -0
  40. package/dist/commands/clean/handlers/index.js.map +1 -0
  41. package/dist/commands/clean/helpers.d.ts +25 -0
  42. package/dist/commands/clean/helpers.d.ts.map +1 -0
  43. package/dist/commands/clean/helpers.js +70 -0
  44. package/dist/commands/clean/helpers.js.map +1 -0
  45. package/dist/commands/clean/index.d.ts +12 -0
  46. package/dist/commands/clean/index.d.ts.map +1 -0
  47. package/dist/commands/clean/index.js +90 -0
  48. package/dist/commands/clean/index.js.map +1 -0
  49. package/dist/commands/clean/types.d.ts +21 -0
  50. package/dist/commands/clean/types.d.ts.map +1 -0
  51. package/dist/commands/clean/types.js +6 -0
  52. package/dist/commands/clean/types.js.map +1 -0
  53. package/dist/commands/clean.d.ts +5 -0
  54. package/dist/commands/clean.d.ts.map +1 -1
  55. package/dist/commands/clean.js +18 -35
  56. package/dist/commands/clean.js.map +1 -1
  57. package/dist/commands/config/display.d.ts +36 -0
  58. package/dist/commands/config/display.d.ts.map +1 -0
  59. package/dist/commands/config/display.js +86 -0
  60. package/dist/commands/config/display.js.map +1 -0
  61. package/dist/commands/config/handlers/index.d.ts +8 -0
  62. package/dist/commands/config/handlers/index.d.ts.map +1 -0
  63. package/dist/commands/config/handlers/index.js +15 -0
  64. package/dist/commands/config/handlers/index.js.map +1 -0
  65. package/dist/commands/config/handlers/set-value.d.ts +11 -0
  66. package/dist/commands/config/handlers/set-value.d.ts.map +1 -0
  67. package/dist/commands/config/handlers/set-value.js +36 -0
  68. package/dist/commands/config/handlers/set-value.js.map +1 -0
  69. package/dist/commands/config/handlers/show-all.d.ts +11 -0
  70. package/dist/commands/config/handlers/show-all.d.ts.map +1 -0
  71. package/dist/commands/config/handlers/show-all.js +24 -0
  72. package/dist/commands/config/handlers/show-all.js.map +1 -0
  73. package/dist/commands/config/handlers/show-path.d.ts +11 -0
  74. package/dist/commands/config/handlers/show-path.d.ts.map +1 -0
  75. package/dist/commands/config/handlers/show-path.js +20 -0
  76. package/dist/commands/config/handlers/show-path.js.map +1 -0
  77. package/dist/commands/config/handlers/show-value.d.ts +11 -0
  78. package/dist/commands/config/handlers/show-value.d.ts.map +1 -0
  79. package/dist/commands/config/handlers/show-value.js +31 -0
  80. package/dist/commands/config/handlers/show-value.js.map +1 -0
  81. package/dist/commands/config/helpers.d.ts +23 -0
  82. package/dist/commands/config/helpers.d.ts.map +1 -0
  83. package/dist/commands/config/helpers.js +53 -0
  84. package/dist/commands/config/helpers.js.map +1 -0
  85. package/dist/commands/config/index.d.ts +12 -0
  86. package/dist/commands/config/index.d.ts.map +1 -0
  87. package/dist/commands/config/index.js +56 -0
  88. package/dist/commands/config/index.js.map +1 -0
  89. package/dist/commands/config/types.d.ts +31 -0
  90. package/dist/commands/config/types.d.ts.map +1 -0
  91. package/dist/commands/config/types.js +13 -0
  92. package/dist/commands/config/types.js.map +1 -0
  93. package/dist/commands/config.d.ts +5 -0
  94. package/dist/commands/config.d.ts.map +1 -1
  95. package/dist/commands/config.js +22 -41
  96. package/dist/commands/config.js.map +1 -1
  97. package/dist/commands/index.d.ts +27 -0
  98. package/dist/commands/index.d.ts.map +1 -0
  99. package/dist/commands/index.js +52 -0
  100. package/dist/commands/index.js.map +1 -0
  101. package/dist/commands/list/display.d.ts +39 -0
  102. package/dist/commands/list/display.d.ts.map +1 -0
  103. package/dist/commands/list/display.js +144 -0
  104. package/dist/commands/list/display.js.map +1 -0
  105. package/dist/commands/list/index.d.ts +12 -0
  106. package/dist/commands/list/index.d.ts.map +1 -0
  107. package/dist/commands/list/index.js +128 -0
  108. package/dist/commands/list/index.js.map +1 -0
  109. package/dist/commands/list/types.d.ts +32 -0
  110. package/dist/commands/list/types.d.ts.map +1 -0
  111. package/dist/commands/list/types.js +6 -0
  112. package/dist/commands/list/types.js.map +1 -0
  113. package/dist/commands/list.d.ts +5 -0
  114. package/dist/commands/list.d.ts.map +1 -1
  115. package/dist/commands/list.js +29 -60
  116. package/dist/commands/list.js.map +1 -1
  117. package/dist/commands/load/display.d.ts +28 -0
  118. package/dist/commands/load/display.d.ts.map +1 -0
  119. package/dist/commands/load/display.js +53 -0
  120. package/dist/commands/load/display.js.map +1 -0
  121. package/dist/commands/load/handlers/copy-repo.d.ts +13 -0
  122. package/dist/commands/load/handlers/copy-repo.d.ts.map +1 -0
  123. package/dist/commands/load/handlers/copy-repo.js +82 -0
  124. package/dist/commands/load/handlers/copy-repo.js.map +1 -0
  125. package/dist/commands/load/handlers/index.d.ts +6 -0
  126. package/dist/commands/load/handlers/index.d.ts.map +1 -0
  127. package/dist/commands/load/handlers/index.js +11 -0
  128. package/dist/commands/load/handlers/index.js.map +1 -0
  129. package/dist/commands/load/handlers/url-add.d.ts +13 -0
  130. package/dist/commands/load/handlers/url-add.d.ts.map +1 -0
  131. package/dist/commands/load/handlers/url-add.js +50 -0
  132. package/dist/commands/load/handlers/url-add.js.map +1 -0
  133. package/dist/commands/load/helpers.d.ts +81 -0
  134. package/dist/commands/load/helpers.d.ts.map +1 -0
  135. package/dist/commands/load/helpers.js +199 -0
  136. package/dist/commands/load/helpers.js.map +1 -0
  137. package/dist/commands/load/index.d.ts +13 -0
  138. package/dist/commands/load/index.d.ts.map +1 -0
  139. package/dist/commands/load/index.js +46 -0
  140. package/dist/commands/load/index.js.map +1 -0
  141. package/dist/commands/load/types.d.ts +37 -0
  142. package/dist/commands/load/types.d.ts.map +1 -0
  143. package/dist/commands/load/types.js +6 -0
  144. package/dist/commands/load/types.js.map +1 -0
  145. package/dist/commands/load.d.ts +5 -0
  146. package/dist/commands/load.d.ts.map +1 -1
  147. package/dist/commands/load.js +27 -64
  148. package/dist/commands/load.js.map +1 -1
  149. package/dist/commands/options/all.d.ts +11 -0
  150. package/dist/commands/options/all.d.ts.map +1 -0
  151. package/dist/commands/options/all.js +14 -0
  152. package/dist/commands/options/all.js.map +1 -0
  153. package/dist/commands/options/branch.d.ts +11 -0
  154. package/dist/commands/options/branch.d.ts.map +1 -0
  155. package/dist/commands/options/branch.js +14 -0
  156. package/dist/commands/options/branch.js.map +1 -0
  157. package/dist/commands/options/check.d.ts +11 -0
  158. package/dist/commands/options/check.d.ts.map +1 -0
  159. package/dist/commands/options/check.js +14 -0
  160. package/dist/commands/options/check.js.map +1 -0
  161. package/dist/commands/options/clean-empty.d.ts +11 -0
  162. package/dist/commands/options/clean-empty.d.ts.map +1 -0
  163. package/dist/commands/options/clean-empty.js +14 -0
  164. package/dist/commands/options/clean-empty.js.map +1 -0
  165. package/dist/commands/options/depth.d.ts +11 -0
  166. package/dist/commands/options/depth.d.ts.map +1 -0
  167. package/dist/commands/options/depth.js +14 -0
  168. package/dist/commands/options/depth.js.map +1 -0
  169. package/dist/commands/options/dry-run.d.ts +11 -0
  170. package/dist/commands/options/dry-run.d.ts.map +1 -0
  171. package/dist/commands/options/dry-run.js +14 -0
  172. package/dist/commands/options/dry-run.js.map +1 -0
  173. package/dist/commands/options/force.d.ts +11 -0
  174. package/dist/commands/options/force.d.ts.map +1 -0
  175. package/dist/commands/options/force.js +14 -0
  176. package/dist/commands/options/force.js.map +1 -0
  177. package/dist/commands/options/index.d.ts +24 -0
  178. package/dist/commands/options/index.d.ts.map +1 -0
  179. package/dist/commands/options/index.js +53 -0
  180. package/dist/commands/options/index.js.map +1 -0
  181. package/dist/commands/options/json.d.ts +11 -0
  182. package/dist/commands/options/json.d.ts.map +1 -0
  183. package/dist/commands/options/json.js +14 -0
  184. package/dist/commands/options/json.js.map +1 -0
  185. package/dist/commands/options/keep-empty.d.ts +11 -0
  186. package/dist/commands/options/keep-empty.d.ts.map +1 -0
  187. package/dist/commands/options/keep-empty.js +14 -0
  188. package/dist/commands/options/keep-empty.js.map +1 -0
  189. package/dist/commands/options/list.d.ts +11 -0
  190. package/dist/commands/options/list.d.ts.map +1 -0
  191. package/dist/commands/options/list.js +14 -0
  192. package/dist/commands/options/list.js.map +1 -0
  193. package/dist/commands/options/name.d.ts +11 -0
  194. package/dist/commands/options/name.d.ts.map +1 -0
  195. package/dist/commands/options/name.js +14 -0
  196. package/dist/commands/options/name.js.map +1 -0
  197. package/dist/commands/options/no-ignore.d.ts +11 -0
  198. package/dist/commands/options/no-ignore.d.ts.map +1 -0
  199. package/dist/commands/options/no-ignore.js +14 -0
  200. package/dist/commands/options/no-ignore.js.map +1 -0
  201. package/dist/commands/options/path.d.ts +11 -0
  202. package/dist/commands/options/path.d.ts.map +1 -0
  203. package/dist/commands/options/path.js +14 -0
  204. package/dist/commands/options/path.js.map +1 -0
  205. package/dist/commands/options/shallow.d.ts +16 -0
  206. package/dist/commands/options/shallow.d.ts.map +1 -0
  207. package/dist/commands/options/shallow.js +19 -0
  208. package/dist/commands/options/shallow.js.map +1 -0
  209. package/dist/commands/options/status.d.ts +11 -0
  210. package/dist/commands/options/status.d.ts.map +1 -0
  211. package/dist/commands/options/status.js +14 -0
  212. package/dist/commands/options/status.js.map +1 -0
  213. package/dist/commands/options/subdir.d.ts +11 -0
  214. package/dist/commands/options/subdir.d.ts.map +1 -0
  215. package/dist/commands/options/subdir.js +14 -0
  216. package/dist/commands/options/subdir.js.map +1 -0
  217. package/dist/commands/options/sync-only.d.ts +11 -0
  218. package/dist/commands/options/sync-only.d.ts.map +1 -0
  219. package/dist/commands/options/sync-only.js +14 -0
  220. package/dist/commands/options/sync-only.js.map +1 -0
  221. package/dist/commands/options/sync.d.ts +11 -0
  222. package/dist/commands/options/sync.d.ts.map +1 -0
  223. package/dist/commands/options/sync.js +14 -0
  224. package/dist/commands/options/sync.js.map +1 -0
  225. package/dist/commands/options/verbose.d.ts +11 -0
  226. package/dist/commands/options/verbose.d.ts.map +1 -0
  227. package/dist/commands/options/verbose.js +14 -0
  228. package/dist/commands/options/verbose.js.map +1 -0
  229. package/dist/commands/unload/display.d.ts +29 -0
  230. package/dist/commands/unload/display.d.ts.map +1 -0
  231. package/dist/commands/unload/display.js +125 -0
  232. package/dist/commands/unload/display.js.map +1 -0
  233. package/dist/commands/unload/handlers/clean-empty.d.ts +11 -0
  234. package/dist/commands/unload/handlers/clean-empty.d.ts.map +1 -0
  235. package/dist/commands/unload/handlers/clean-empty.js +111 -0
  236. package/dist/commands/unload/handlers/clean-empty.js.map +1 -0
  237. package/dist/commands/unload/handlers/index.d.ts +8 -0
  238. package/dist/commands/unload/handlers/index.d.ts.map +1 -0
  239. package/dist/commands/unload/handlers/index.js +15 -0
  240. package/dist/commands/unload/handlers/index.js.map +1 -0
  241. package/dist/commands/unload/handlers/list.d.ts +11 -0
  242. package/dist/commands/unload/handlers/list.d.ts.map +1 -0
  243. package/dist/commands/unload/handlers/list.js +42 -0
  244. package/dist/commands/unload/handlers/list.js.map +1 -0
  245. package/dist/commands/unload/handlers/remove-all.d.ts +11 -0
  246. package/dist/commands/unload/handlers/remove-all.d.ts.map +1 -0
  247. package/dist/commands/unload/handlers/remove-all.js +184 -0
  248. package/dist/commands/unload/handlers/remove-all.js.map +1 -0
  249. package/dist/commands/unload/handlers/remove-single.d.ts +12 -0
  250. package/dist/commands/unload/handlers/remove-single.d.ts.map +1 -0
  251. package/dist/commands/unload/handlers/remove-single.js +217 -0
  252. package/dist/commands/unload/handlers/remove-single.js.map +1 -0
  253. package/dist/commands/unload/helpers.d.ts +55 -0
  254. package/dist/commands/unload/helpers.d.ts.map +1 -0
  255. package/dist/commands/unload/helpers.js +256 -0
  256. package/dist/commands/unload/helpers.js.map +1 -0
  257. package/dist/commands/unload/index.d.ts +12 -0
  258. package/dist/commands/unload/index.d.ts.map +1 -0
  259. package/dist/commands/unload/index.js +121 -0
  260. package/dist/commands/unload/index.js.map +1 -0
  261. package/dist/commands/unload/types.d.ts +53 -0
  262. package/dist/commands/unload/types.d.ts.map +1 -0
  263. package/dist/commands/unload/types.js +6 -0
  264. package/dist/commands/unload/types.js.map +1 -0
  265. package/dist/commands/unload.d.ts +6 -1
  266. package/dist/commands/unload.d.ts.map +1 -1
  267. package/dist/commands/unload.js +165 -169
  268. package/dist/commands/unload.js.map +1 -1
  269. package/dist/commands/update/display.d.ts +30 -0
  270. package/dist/commands/update/display.d.ts.map +1 -0
  271. package/dist/commands/update/display.js +161 -0
  272. package/dist/commands/update/display.js.map +1 -0
  273. package/dist/commands/update/handlers/index.d.ts +8 -0
  274. package/dist/commands/update/handlers/index.d.ts.map +1 -0
  275. package/dist/commands/update/handlers/index.js +15 -0
  276. package/dist/commands/update/handlers/index.js.map +1 -0
  277. package/dist/commands/update/handlers/status.d.ts +11 -0
  278. package/dist/commands/update/handlers/status.d.ts.map +1 -0
  279. package/dist/commands/update/handlers/status.js +20 -0
  280. package/dist/commands/update/handlers/status.js.map +1 -0
  281. package/dist/commands/update/handlers/sync-only.d.ts +11 -0
  282. package/dist/commands/update/handlers/sync-only.d.ts.map +1 -0
  283. package/dist/commands/update/handlers/sync-only.js +41 -0
  284. package/dist/commands/update/handlers/sync-only.js.map +1 -0
  285. package/dist/commands/update/handlers/update-all.d.ts +10 -0
  286. package/dist/commands/update/handlers/update-all.d.ts.map +1 -0
  287. package/dist/commands/update/handlers/update-all.js +125 -0
  288. package/dist/commands/update/handlers/update-all.js.map +1 -0
  289. package/dist/commands/update/handlers/update-single.d.ts +11 -0
  290. package/dist/commands/update/handlers/update-single.d.ts.map +1 -0
  291. package/dist/commands/update/handlers/update-single.js +154 -0
  292. package/dist/commands/update/handlers/update-single.js.map +1 -0
  293. package/dist/commands/update/helpers.d.ts +13 -0
  294. package/dist/commands/update/helpers.d.ts.map +1 -0
  295. package/dist/commands/update/helpers.js +86 -0
  296. package/dist/commands/update/helpers.js.map +1 -0
  297. package/dist/commands/update/index.d.ts +12 -0
  298. package/dist/commands/update/index.d.ts.map +1 -0
  299. package/dist/commands/update/index.js +67 -0
  300. package/dist/commands/update/index.js.map +1 -0
  301. package/dist/commands/update/types.d.ts +55 -0
  302. package/dist/commands/update/types.d.ts.map +1 -0
  303. package/dist/commands/update/types.js +6 -0
  304. package/dist/commands/update/types.js.map +1 -0
  305. package/dist/commands/update.d.ts +6 -1
  306. package/dist/commands/update.d.ts.map +1 -1
  307. package/dist/commands/update.js +73 -80
  308. package/dist/commands/update.js.map +1 -1
  309. package/dist/core/config-manager.d.ts +83 -0
  310. package/dist/core/config-manager.d.ts.map +1 -0
  311. package/dist/core/config-manager.js +170 -0
  312. package/dist/core/config-manager.js.map +1 -0
  313. package/dist/core/config.d.ts +22 -2
  314. package/dist/core/config.d.ts.map +1 -1
  315. package/dist/core/config.js +71 -35
  316. package/dist/core/config.js.map +1 -1
  317. package/dist/core/filesystem.js +1 -1
  318. package/dist/core/filesystem.js.map +1 -1
  319. package/dist/core/loading-state.d.ts +141 -0
  320. package/dist/core/loading-state.d.ts.map +1 -0
  321. package/dist/core/loading-state.js +237 -0
  322. package/dist/core/loading-state.js.map +1 -0
  323. package/dist/core/loading.d.ts +24 -27
  324. package/dist/core/loading.d.ts.map +1 -1
  325. package/dist/core/loading.js +127 -88
  326. package/dist/core/loading.js.map +1 -1
  327. package/dist/core/migration.d.ts +54 -0
  328. package/dist/core/migration.d.ts.map +1 -0
  329. package/dist/core/migration.js +277 -0
  330. package/dist/core/migration.js.map +1 -0
  331. package/dist/core/paths.d.ts +58 -0
  332. package/dist/core/paths.d.ts.map +1 -0
  333. package/dist/core/paths.js +103 -0
  334. package/dist/core/paths.js.map +1 -0
  335. package/dist/core/repos-index.d.ts +113 -0
  336. package/dist/core/repos-index.d.ts.map +1 -0
  337. package/dist/core/repos-index.js +206 -0
  338. package/dist/core/repos-index.js.map +1 -0
  339. package/dist/core/repository.js +2 -2
  340. package/dist/core/repository.js.map +1 -1
  341. package/dist/core/sync.d.ts.map +1 -1
  342. package/dist/core/sync.js +3 -3
  343. package/dist/core/sync.js.map +1 -1
  344. package/dist/types/index.d.ts +2 -0
  345. package/dist/types/index.d.ts.map +1 -1
  346. package/dist/ui/format.d.ts +159 -0
  347. package/dist/ui/format.d.ts.map +1 -0
  348. package/dist/ui/format.js +300 -0
  349. package/dist/ui/format.js.map +1 -0
  350. package/dist/ui/index.d.ts +9 -0
  351. package/dist/ui/index.d.ts.map +1 -0
  352. package/dist/ui/index.js +53 -0
  353. package/dist/ui/index.js.map +1 -0
  354. package/dist/ui/prompt.d.ts +94 -0
  355. package/dist/ui/prompt.d.ts.map +1 -0
  356. package/dist/ui/prompt.js +223 -0
  357. package/dist/ui/prompt.js.map +1 -0
  358. package/dist/ui/spinner.d.ts +99 -0
  359. package/dist/ui/spinner.d.ts.map +1 -0
  360. package/dist/ui/spinner.js +136 -0
  361. package/dist/ui/spinner.js.map +1 -0
  362. package/dist/ui/table.d.ts +142 -0
  363. package/dist/ui/table.d.ts.map +1 -0
  364. package/dist/ui/table.js +213 -0
  365. package/dist/ui/table.js.map +1 -0
  366. package/dist/utils/constants.d.ts +152 -0
  367. package/dist/utils/constants.d.ts.map +1 -0
  368. package/dist/utils/constants.js +160 -0
  369. package/dist/utils/constants.js.map +1 -0
  370. package/dist/utils/error.d.ts +109 -0
  371. package/dist/utils/error.d.ts.map +1 -0
  372. package/dist/utils/error.js +212 -0
  373. package/dist/utils/error.js.map +1 -0
  374. package/dist/utils/index.d.ts +8 -0
  375. package/dist/utils/index.d.ts.map +1 -0
  376. package/dist/utils/index.js +44 -0
  377. package/dist/utils/index.js.map +1 -0
  378. package/dist/utils/validation.d.ts +122 -0
  379. package/dist/utils/validation.d.ts.map +1 -0
  380. package/dist/utils/validation.js +248 -0
  381. package/dist/utils/validation.js.map +1 -0
  382. package/package.json +23 -3
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * --sync 参数
4
+ * 用于更新后同步到工作区
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.syncOption = void 0;
8
+ const commander_1 = require("commander");
9
+ /**
10
+ * --sync 选项
11
+ * 用于 update 命令在更新缓存后同步到工作区
12
+ */
13
+ exports.syncOption = new commander_1.Option("-s, --sync", "Sync to workspace after updating cache");
14
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/options/sync.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAAmC;AAEnC;;;GAGG;AACU,QAAA,UAAU,GAAG,IAAI,kBAAM,CAClC,YAAY,EACZ,wCAAwC,CACzC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * --verbose 参数
3
+ * 用于显示详细输出
4
+ */
5
+ import { Option } from "commander";
6
+ /**
7
+ * --verbose 选项
8
+ * 用于 unload 等命令显示详细的操作进度
9
+ */
10
+ export declare const verboseOption: Option;
11
+ //# sourceMappingURL=verbose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../../../src/commands/options/verbose.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,aAAa,QAGzB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * --verbose 参数
4
+ * 用于显示详细输出
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.verboseOption = void 0;
8
+ const commander_1 = require("commander");
9
+ /**
10
+ * --verbose 选项
11
+ * 用于 unload 等命令显示详细的操作进度
12
+ */
13
+ exports.verboseOption = new commander_1.Option("-v, --verbose", "Show detailed output");
14
+ //# sourceMappingURL=verbose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose.js","sourceRoot":"","sources":["../../../src/commands/options/verbose.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAAmC;AAEnC;;;GAGG;AACU,QAAA,aAAa,GAAG,IAAI,kBAAM,CACrC,eAAe,EACf,sBAAsB,CACvB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * unload 命令显示/格式化逻辑
3
+ */
4
+ import { LoadingEntry } from "../../types/index.js";
5
+ import { EmptyDir } from "./types.js";
6
+ /**
7
+ * 交互式仓库条目选择
8
+ * @param matches 匹配的条目列表
9
+ * @param name 用户输入的名称
10
+ * @returns 用户选择的条目,如果取消则返回 null
11
+ */
12
+ export declare function selectEntry(matches: LoadingEntry[], name: string): Promise<LoadingEntry | null>;
13
+ /**
14
+ * 显示已加载的条目列表
15
+ * @param loadedEntries 已加载的条目列表
16
+ * @param verbose 是否显示详细信息
17
+ */
18
+ export declare function displayLoadedEntries(loadedEntries: LoadingEntry[], verbose?: boolean): void;
19
+ /**
20
+ * 显示空目录提示
21
+ * @param emptyDirs 空目录列表
22
+ * @param verbose 是否显示详细信息
23
+ */
24
+ export declare function displayEmptyDirsHint(emptyDirs: EmptyDir[], verbose?: boolean): void;
25
+ /**
26
+ * 显示用法帮助
27
+ */
28
+ export declare function displayUsageHelp(): void;
29
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/commands/unload/display.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B9B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,UAAQ,GACd,IAAI,CA0DN;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,UAAQ,GACd,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAoBvC"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ /**
3
+ * unload 命令显示/格式化逻辑
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.selectEntry = selectEntry;
10
+ exports.displayLoadedEntries = displayLoadedEntries;
11
+ exports.displayEmptyDirsHint = displayEmptyDirsHint;
12
+ exports.displayUsageHelp = displayUsageHelp;
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const prompts_1 = require("@inquirer/prompts");
15
+ const table_js_1 = require("../../ui/table.js");
16
+ /**
17
+ * 交互式仓库条目选择
18
+ * @param matches 匹配的条目列表
19
+ * @param name 用户输入的名称
20
+ * @returns 用户选择的条目,如果取消则返回 null
21
+ */
22
+ async function selectEntry(matches, name) {
23
+ console.log(chalk_1.default.yellow(`Found ${matches.length} reference code matching '${name}':`));
24
+ console.log();
25
+ try {
26
+ const selected = await (0, prompts_1.select)({
27
+ message: "Select reference code to remove:",
28
+ choices: [
29
+ ...matches.map((match) => ({
30
+ name: `${match.repoName} -> ${match.targetPath}`,
31
+ value: match,
32
+ })),
33
+ {
34
+ name: chalk_1.default.gray("Cancel"),
35
+ value: null,
36
+ },
37
+ ],
38
+ });
39
+ return selected;
40
+ }
41
+ catch {
42
+ // 用户按 Ctrl+C 取消
43
+ return null;
44
+ }
45
+ }
46
+ /**
47
+ * 显示已加载的条目列表
48
+ * @param loadedEntries 已加载的条目列表
49
+ * @param verbose 是否显示详细信息
50
+ */
51
+ function displayLoadedEntries(loadedEntries, verbose = false) {
52
+ console.log(chalk_1.default.bold(`📦 Loaded reference code in current project (${loadedEntries.length})`));
53
+ console.log();
54
+ // 表头
55
+ const COL_NAME = 35;
56
+ const COL_PATH = 30;
57
+ const COL_COMMIT = 10;
58
+ console.log(chalk_1.default.gray(" " +
59
+ (0, table_js_1.padEnd)("REPO", COL_NAME) +
60
+ (0, table_js_1.padEnd)("PATH", COL_PATH) +
61
+ (0, table_js_1.padEnd)("COMMIT", COL_COMMIT)));
62
+ // 条目列表
63
+ for (const entry of loadedEntries) {
64
+ const repoName = entry.repoName.replace(/\\/g, "/");
65
+ const targetPath = entry.targetPath.replace(/\\/g, "/");
66
+ const commitShort = entry.commitId ? entry.commitId.substring(0, 7) : "-";
67
+ console.log(" " +
68
+ (0, table_js_1.padEnd)(repoName, COL_NAME) +
69
+ (0, table_js_1.padEnd)(targetPath, COL_PATH) +
70
+ (0, table_js_1.padEnd)(commitShort, COL_COMMIT));
71
+ }
72
+ console.log();
73
+ // 在详细模式下显示更多信息
74
+ if (verbose) {
75
+ console.log(chalk_1.default.gray("Details:"));
76
+ for (const entry of loadedEntries) {
77
+ console.log(chalk_1.default.gray(` - ${entry.repoName}`));
78
+ console.log(chalk_1.default.gray(` ID: ${entry.id}`));
79
+ console.log(chalk_1.default.gray(` URL: ${entry.repoUrl}`));
80
+ console.log(chalk_1.default.gray(` Path: ${entry.targetPath}`));
81
+ console.log(chalk_1.default.gray(` Commit: ${entry.commitId}`));
82
+ if (entry.branch) {
83
+ console.log(chalk_1.default.gray(` Branch: ${entry.branch}`));
84
+ }
85
+ if (entry.subdir) {
86
+ console.log(chalk_1.default.gray(` Subdir: ${entry.subdir}`));
87
+ }
88
+ console.log(chalk_1.default.gray(` Loaded at: ${entry.loadedAt}`));
89
+ if (entry.updatedAt) {
90
+ console.log(chalk_1.default.gray(` Updated at: ${entry.updatedAt}`));
91
+ }
92
+ }
93
+ console.log();
94
+ }
95
+ }
96
+ /**
97
+ * 显示空目录提示
98
+ * @param emptyDirs 空目录列表
99
+ * @param verbose 是否显示详细信息
100
+ */
101
+ function displayEmptyDirsHint(emptyDirs, verbose = false) {
102
+ console.log(chalk_1.default.yellow(`⚠️ Found ${emptyDirs.length} empty directory structures`));
103
+ if (verbose) {
104
+ for (const dir of emptyDirs) {
105
+ console.log(chalk_1.default.gray(` - ${dir.fullPath.replace(/\\/g, "/")}`));
106
+ }
107
+ }
108
+ console.log(chalk_1.default.gray(` Use 'grf unload --clean-empty' to clean empty directories`));
109
+ console.log();
110
+ }
111
+ /**
112
+ * 显示用法帮助
113
+ */
114
+ function displayUsageHelp() {
115
+ console.log(chalk_1.default.yellow("No reference code specified to remove."));
116
+ console.log();
117
+ console.log("Usage:");
118
+ console.log(` ${chalk_1.default.cyan("grf unload <name>")} Remove specific reference code`);
119
+ console.log(` ${chalk_1.default.cyan("grf unload --all")} Remove all reference code`);
120
+ console.log(` ${chalk_1.default.cyan("grf unload --list")} List all loaded reference code`);
121
+ console.log(` ${chalk_1.default.cyan("grf unload --clean-empty")} Clean empty directory structures`);
122
+ console.log();
123
+ console.log(`Use '${chalk_1.default.cyan("grf unload --list")}' to see all loaded reference code.`);
124
+ }
125
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/commands/unload/display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * --clean-empty 处理逻辑
3
+ */
4
+ import { UnloadContext } from "../types.js";
5
+ /**
6
+ * 处理 --clean-empty 选项
7
+ * @param context unload 命令上下文
8
+ * @returns 是否已处理(true 表示命令应该结束)
9
+ */
10
+ export declare function handleCleanEmpty(context: UnloadContext): Promise<boolean>;
11
+ //# sourceMappingURL=clean-empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-empty.d.ts","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/clean-empty.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CAwElB"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * --clean-empty 处理逻辑
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.handleCleanEmpty = handleCleanEmpty;
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const filesystem = __importStar(require("../../../core/filesystem.js"));
45
+ const spinner_js_1 = require("../../../ui/spinner.js");
46
+ const prompt_js_1 = require("../../../ui/prompt.js");
47
+ const helpers_js_1 = require("../helpers.js");
48
+ /**
49
+ * 处理 --clean-empty 选项
50
+ * @param context unload 命令上下文
51
+ * @returns 是否已处理(true 表示命令应该结束)
52
+ */
53
+ async function handleCleanEmpty(context) {
54
+ const { gitrefDir, emptyDirs, options, startTime } = context;
55
+ if (!options.cleanEmpty) {
56
+ return false;
57
+ }
58
+ if (emptyDirs.length === 0) {
59
+ console.log(chalk_1.default.green("No empty directories to clean."));
60
+ return true;
61
+ }
62
+ console.log(`Found ${chalk_1.default.bold(emptyDirs.length)} empty directories:`);
63
+ for (const dir of emptyDirs) {
64
+ console.log(` - ${dir.fullPath.replace(/\\/g, "/")}`);
65
+ }
66
+ console.log();
67
+ // dry-run 模式
68
+ if (options.dryRun) {
69
+ console.log(chalk_1.default.yellow("(Dry run mode, no actual deletion)"));
70
+ return true;
71
+ }
72
+ // 确认删除
73
+ if (!options.force) {
74
+ const confirmed = await (0, prompt_js_1.confirm)("Are you sure you want to clean these empty directories?");
75
+ if (!confirmed) {
76
+ console.log(chalk_1.default.yellow("Operation cancelled."));
77
+ return true;
78
+ }
79
+ }
80
+ // 执行清理
81
+ const spinner = (0, spinner_js_1.startSpinner)("Cleaning empty directories...");
82
+ try {
83
+ const cleanedCount = await (0, helpers_js_1.cleanEmptyDirectories)(gitrefDir, emptyDirs, options.verbose);
84
+ // 检查 .gitreference 目录是否为空
85
+ if (!options.keepEmpty) {
86
+ try {
87
+ const remaining = await filesystem.readDir(gitrefDir);
88
+ if (remaining.length === 0) {
89
+ if (options.verbose) {
90
+ console.log(chalk_1.default.gray(` Removing empty .gitreference directory`));
91
+ }
92
+ await filesystem.removeDir(gitrefDir);
93
+ }
94
+ }
95
+ catch {
96
+ // 忽略错误
97
+ }
98
+ }
99
+ const elapsed = Date.now() - startTime;
100
+ spinner.succeed(chalk_1.default.green(`Cleaned ${cleanedCount} empty directories!`));
101
+ if (options.verbose) {
102
+ console.log(chalk_1.default.gray(` Time elapsed: ${elapsed}ms`));
103
+ }
104
+ }
105
+ catch (error) {
106
+ spinner.fail(chalk_1.default.red("Cleanup failed"));
107
+ throw error;
108
+ }
109
+ return true;
110
+ }
111
+ //# sourceMappingURL=clean-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-empty.js","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/clean-empty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * unload 命令 handlers 统一导出
3
+ */
4
+ export { handleCleanEmpty } from "./clean-empty.js";
5
+ export { handleList } from "./list.js";
6
+ export { handleRemoveAll } from "./remove-all.js";
7
+ export { handleRemoveSingle } from "./remove-single.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * unload 命令 handlers 统一导出
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.handleRemoveSingle = exports.handleRemoveAll = exports.handleList = exports.handleCleanEmpty = void 0;
7
+ var clean_empty_js_1 = require("./clean-empty.js");
8
+ Object.defineProperty(exports, "handleCleanEmpty", { enumerable: true, get: function () { return clean_empty_js_1.handleCleanEmpty; } });
9
+ var list_js_1 = require("./list.js");
10
+ Object.defineProperty(exports, "handleList", { enumerable: true, get: function () { return list_js_1.handleList; } });
11
+ var remove_all_js_1 = require("./remove-all.js");
12
+ Object.defineProperty(exports, "handleRemoveAll", { enumerable: true, get: function () { return remove_all_js_1.handleRemoveAll; } });
13
+ var remove_single_js_1 = require("./remove-single.js");
14
+ Object.defineProperty(exports, "handleRemoveSingle", { enumerable: true, get: function () { return remove_single_js_1.handleRemoveSingle; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,iDAAkD;AAAzC,gHAAA,eAAe,OAAA;AACxB,uDAAwD;AAA/C,sHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * --list 处理逻辑
3
+ */
4
+ import { UnloadContext } from "../types.js";
5
+ /**
6
+ * 处理 --list 选项
7
+ * @param context unload 命令上下文
8
+ * @returns 是否已处理(true 表示命令应该结束)
9
+ */
10
+ export declare function handleList(context: UnloadContext): Promise<boolean>;
11
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCzE"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * --list 处理逻辑
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.handleList = handleList;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const display_js_1 = require("../display.js");
12
+ /**
13
+ * 处理 --list 选项
14
+ * @param context unload 命令上下文
15
+ * @returns 是否已处理(true 表示命令应该结束)
16
+ */
17
+ async function handleList(context) {
18
+ const { loadedEntries, emptyDirs, options } = context;
19
+ if (!options.list) {
20
+ return false;
21
+ }
22
+ if (loadedEntries.length === 0 && emptyDirs.length === 0) {
23
+ console.log(chalk_1.default.yellow("No loaded reference code in current project."));
24
+ return true;
25
+ }
26
+ if (loadedEntries.length > 0) {
27
+ (0, display_js_1.displayLoadedEntries)(loadedEntries, options.verbose);
28
+ }
29
+ else {
30
+ console.log(chalk_1.default.yellow("No loaded reference code in current project."));
31
+ console.log();
32
+ }
33
+ // 显示空目录提示
34
+ if (emptyDirs.length > 0) {
35
+ (0, display_js_1.displayEmptyDirsHint)(emptyDirs, options.verbose);
36
+ }
37
+ if (loadedEntries.length > 0) {
38
+ console.log(chalk_1.default.gray(`💡 Use 'grf unload <name>' to remove specific reference code`));
39
+ }
40
+ return true;
41
+ }
42
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/list.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAWH,gCAiCC;AA1CD,kDAA0B;AAE1B,8CAA2E;AAE3E;;;;GAIG;AACI,KAAK,UAAU,UAAU,CAAC,OAAsB;IACrD,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAA,iCAAoB,EAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,UAAU;IACV,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAA,iCAAoB,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,8DAA8D,CAC/D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * --all 处理逻辑
3
+ */
4
+ import { UnloadContext } from "../types.js";
5
+ /**
6
+ * 处理 --all 选项
7
+ * @param context unload 命令上下文
8
+ * @returns 是否已处理(true 表示命令应该结束)
9
+ */
10
+ export declare function handleRemoveAll(context: UnloadContext): Promise<boolean>;
11
+ //# sourceMappingURL=remove-all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-all.d.ts","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/remove-all.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAO1D;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CAgKlB"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * --all 处理逻辑
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.handleRemoveAll = handleRemoveAll;
43
+ const path_1 = __importDefault(require("path"));
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ const filesystem = __importStar(require("../../../core/filesystem.js"));
46
+ const loading = __importStar(require("../../../core/loading.js"));
47
+ const spinner_js_1 = require("../../../ui/spinner.js");
48
+ const prompt_js_1 = require("../../../ui/prompt.js");
49
+ const helpers_js_1 = require("../helpers.js");
50
+ const constants_js_1 = require("../../../utils/constants.js");
51
+ /** .gitreference 目录名(使用共享常量) */
52
+ const GITREFERENCE_DIR = constants_js_1.DIR_NAMES.GITREFERENCE;
53
+ /**
54
+ * 处理 --all 选项
55
+ * @param context unload 命令上下文
56
+ * @returns 是否已处理(true 表示命令应该结束)
57
+ */
58
+ async function handleRemoveAll(context) {
59
+ const { cwd, gitrefDir, gitrefDirExists, loadedEntries, options, startTime } = context;
60
+ if (!options.all) {
61
+ return false;
62
+ }
63
+ // 如果没有已加载的条目
64
+ if (loadedEntries.length === 0) {
65
+ console.log(chalk_1.default.yellow("No reference code found to delete."));
66
+ console.log();
67
+ console.log(chalk_1.default.gray("💡 Hint: No loaded reference code recorded in loading.json."));
68
+ return true;
69
+ }
70
+ // 收集所有要删除的路径
71
+ const pathsToDelete = [];
72
+ for (const entry of loadedEntries) {
73
+ // 优先使用 workingDirectory,如果不存在则回退到 cwd
74
+ const baseDir = entry.workingDirectory || cwd;
75
+ const absolutePath = path_1.default.resolve(baseDir, entry.targetPath);
76
+ const exists = await filesystem.exists(absolutePath);
77
+ pathsToDelete.push({
78
+ entry,
79
+ absolutePath,
80
+ exists,
81
+ });
82
+ }
83
+ // 显示将要删除的内容
84
+ console.log(`Will delete ${chalk_1.default.bold(loadedEntries.length)} reference code:`);
85
+ for (const pathInfo of pathsToDelete) {
86
+ const status = pathInfo.exists ? "" : chalk_1.default.gray(" (path does not exist)");
87
+ console.log(` - ${pathInfo.entry.repoName} -> ${pathInfo.entry.targetPath}${status}`);
88
+ }
89
+ console.log();
90
+ // dry-run 模式
91
+ if (options.dryRun) {
92
+ console.log(chalk_1.default.yellow("(Dry run mode, no actual deletion)"));
93
+ return true;
94
+ }
95
+ // 确认删除
96
+ if (!options.force) {
97
+ const confirmed = await (0, prompt_js_1.confirm)("Are you sure you want to delete?");
98
+ if (!confirmed) {
99
+ console.log(chalk_1.default.yellow("Operation cancelled."));
100
+ return true;
101
+ }
102
+ }
103
+ // 执行删除
104
+ const spinner = (0, spinner_js_1.startSpinner)("Removing reference code...");
105
+ try {
106
+ let deletedCount = 0;
107
+ for (const pathInfo of pathsToDelete) {
108
+ if (options.verbose) {
109
+ spinner.stop();
110
+ console.log(chalk_1.default.gray(` Removing: ${pathInfo.entry.targetPath}`));
111
+ spinner.start();
112
+ }
113
+ // 删除实际文件/目录(如果存在)
114
+ if (pathInfo.exists) {
115
+ await filesystem.removeDir(pathInfo.absolutePath);
116
+ // 递归删除空的父目录
117
+ // 使用 entry 的 workingDirectory 计算正确的 gitrefDir
118
+ const entryBaseDir = pathInfo.entry.workingDirectory || cwd;
119
+ const entryGitrefDir = path_1.default.join(entryBaseDir, ".gitreference");
120
+ if (pathInfo.entry.targetPath.startsWith(".gitreference/") ||
121
+ pathInfo.entry.targetPath.startsWith(GITREFERENCE_DIR + "/")) {
122
+ // 在 .gitreference 下,清理到 gitrefDir 为止
123
+ if (options.verbose) {
124
+ spinner.stop();
125
+ }
126
+ await (0, helpers_js_1.removeEmptyParents)(pathInfo.absolutePath, entryGitrefDir, options.verbose);
127
+ if (options.verbose) {
128
+ spinner.start();
129
+ }
130
+ }
131
+ else {
132
+ // 自定义路径,清理到工作目录为止
133
+ if (options.verbose) {
134
+ spinner.stop();
135
+ }
136
+ await (0, helpers_js_1.removeEmptyParents)(pathInfo.absolutePath, entryBaseDir, options.verbose);
137
+ if (options.verbose) {
138
+ spinner.start();
139
+ }
140
+ }
141
+ }
142
+ // 从 .gitignore 中清理对应条目
143
+ const gitignoreEntry = pathInfo.entry.targetPath.endsWith("/")
144
+ ? pathInfo.entry.targetPath
145
+ : pathInfo.entry.targetPath + "/";
146
+ await filesystem.removeFromGitignore(cwd, gitignoreEntry);
147
+ deletedCount++;
148
+ }
149
+ // 清空 loading.json
150
+ await loading.clearAllEntries();
151
+ // 检查 .gitreference 目录是否为空
152
+ if (!options.keepEmpty && gitrefDirExists) {
153
+ try {
154
+ const remaining = await filesystem.readDir(gitrefDir);
155
+ // 当只剩 loading.json 或为空时删除整个目录
156
+ if (remaining.length === 0 ||
157
+ (remaining.length === 1 && remaining[0] === "loading.json")) {
158
+ if (options.verbose) {
159
+ spinner.stop();
160
+ console.log(chalk_1.default.gray(` Removing .gitreference directory`));
161
+ spinner.start();
162
+ }
163
+ await filesystem.removeDir(gitrefDir);
164
+ // 从 .gitignore 中移除 .gitreference/ 条目
165
+ await filesystem.removeFromGitignore(cwd, ".gitreference/");
166
+ }
167
+ }
168
+ catch {
169
+ // 忽略错误
170
+ }
171
+ }
172
+ const elapsed = Date.now() - startTime;
173
+ spinner.succeed(chalk_1.default.green(`Deleted ${deletedCount} reference code!`));
174
+ if (options.verbose) {
175
+ console.log(chalk_1.default.gray(` Time elapsed: ${elapsed}ms`));
176
+ }
177
+ }
178
+ catch (error) {
179
+ spinner.fail(chalk_1.default.red("Deletion failed"));
180
+ throw error;
181
+ }
182
+ return true;
183
+ }
184
+ //# sourceMappingURL=remove-all.js.map