grf-cli 1.0.3 → 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 (324) hide show
  1. package/README.md +15 -7
  2. package/README.zh-CN.md +15 -7
  3. package/dist/commands/add/display.d.ts +10 -0
  4. package/dist/commands/add/display.d.ts.map +1 -0
  5. package/dist/commands/add/display.js +25 -0
  6. package/dist/commands/add/display.js.map +1 -0
  7. package/dist/commands/add/helpers.d.ts +11 -0
  8. package/dist/commands/add/helpers.d.ts.map +1 -0
  9. package/dist/commands/add/helpers.js +59 -0
  10. package/dist/commands/add/helpers.js.map +1 -0
  11. package/dist/commands/add/index.d.ts +12 -0
  12. package/dist/commands/add/index.d.ts.map +1 -0
  13. package/dist/commands/add/index.js +57 -0
  14. package/dist/commands/add/index.js.map +1 -0
  15. package/dist/commands/add/types.d.ts +32 -0
  16. package/dist/commands/add/types.d.ts.map +1 -0
  17. package/dist/commands/add/types.js +6 -0
  18. package/dist/commands/add/types.js.map +1 -0
  19. package/dist/commands/add.d.ts.map +1 -1
  20. package/dist/commands/add.js +6 -5
  21. package/dist/commands/add.js.map +1 -1
  22. package/dist/commands/clean/display.d.ts +30 -0
  23. package/dist/commands/clean/display.d.ts.map +1 -0
  24. package/dist/commands/clean/display.js +67 -0
  25. package/dist/commands/clean/display.js.map +1 -0
  26. package/dist/commands/clean/handlers/clean-all.d.ts +12 -0
  27. package/dist/commands/clean/handlers/clean-all.d.ts.map +1 -0
  28. package/dist/commands/clean/handlers/clean-all.js +43 -0
  29. package/dist/commands/clean/handlers/clean-all.js.map +1 -0
  30. package/dist/commands/clean/handlers/clean-single.d.ts +13 -0
  31. package/dist/commands/clean/handlers/clean-single.d.ts.map +1 -0
  32. package/dist/commands/clean/handlers/clean-single.js +78 -0
  33. package/dist/commands/clean/handlers/clean-single.js.map +1 -0
  34. package/dist/commands/clean/handlers/index.d.ts +6 -0
  35. package/dist/commands/clean/handlers/index.d.ts.map +1 -0
  36. package/dist/commands/clean/handlers/index.js +11 -0
  37. package/dist/commands/clean/handlers/index.js.map +1 -0
  38. package/dist/commands/clean/helpers.d.ts +25 -0
  39. package/dist/commands/clean/helpers.d.ts.map +1 -0
  40. package/dist/commands/clean/helpers.js +70 -0
  41. package/dist/commands/clean/helpers.js.map +1 -0
  42. package/dist/commands/clean/index.d.ts +12 -0
  43. package/dist/commands/clean/index.d.ts.map +1 -0
  44. package/dist/commands/clean/index.js +90 -0
  45. package/dist/commands/clean/index.js.map +1 -0
  46. package/dist/commands/clean/types.d.ts +21 -0
  47. package/dist/commands/clean/types.d.ts.map +1 -0
  48. package/dist/commands/clean/types.js +6 -0
  49. package/dist/commands/clean/types.js.map +1 -0
  50. package/dist/commands/clean.d.ts.map +1 -1
  51. package/dist/commands/clean.js +3 -2
  52. package/dist/commands/clean.js.map +1 -1
  53. package/dist/commands/config/display.d.ts +36 -0
  54. package/dist/commands/config/display.d.ts.map +1 -0
  55. package/dist/commands/config/display.js +86 -0
  56. package/dist/commands/config/display.js.map +1 -0
  57. package/dist/commands/config/handlers/index.d.ts +8 -0
  58. package/dist/commands/config/handlers/index.d.ts.map +1 -0
  59. package/dist/commands/config/handlers/index.js +15 -0
  60. package/dist/commands/config/handlers/index.js.map +1 -0
  61. package/dist/commands/config/handlers/set-value.d.ts +11 -0
  62. package/dist/commands/config/handlers/set-value.d.ts.map +1 -0
  63. package/dist/commands/config/handlers/set-value.js +36 -0
  64. package/dist/commands/config/handlers/set-value.js.map +1 -0
  65. package/dist/commands/config/handlers/show-all.d.ts +11 -0
  66. package/dist/commands/config/handlers/show-all.d.ts.map +1 -0
  67. package/dist/commands/config/handlers/show-all.js +24 -0
  68. package/dist/commands/config/handlers/show-all.js.map +1 -0
  69. package/dist/commands/config/handlers/show-path.d.ts +11 -0
  70. package/dist/commands/config/handlers/show-path.d.ts.map +1 -0
  71. package/dist/commands/config/handlers/show-path.js +20 -0
  72. package/dist/commands/config/handlers/show-path.js.map +1 -0
  73. package/dist/commands/config/handlers/show-value.d.ts +11 -0
  74. package/dist/commands/config/handlers/show-value.d.ts.map +1 -0
  75. package/dist/commands/config/handlers/show-value.js +31 -0
  76. package/dist/commands/config/handlers/show-value.js.map +1 -0
  77. package/dist/commands/config/helpers.d.ts +23 -0
  78. package/dist/commands/config/helpers.d.ts.map +1 -0
  79. package/dist/commands/config/helpers.js +53 -0
  80. package/dist/commands/config/helpers.js.map +1 -0
  81. package/dist/commands/config/index.d.ts +12 -0
  82. package/dist/commands/config/index.d.ts.map +1 -0
  83. package/dist/commands/config/index.js +56 -0
  84. package/dist/commands/config/index.js.map +1 -0
  85. package/dist/commands/config/types.d.ts +31 -0
  86. package/dist/commands/config/types.d.ts.map +1 -0
  87. package/dist/commands/config/types.js +13 -0
  88. package/dist/commands/config/types.js.map +1 -0
  89. package/dist/commands/config.d.ts.map +1 -1
  90. package/dist/commands/config.js +3 -2
  91. package/dist/commands/config.js.map +1 -1
  92. package/dist/commands/index.d.ts +7 -7
  93. package/dist/commands/index.d.ts.map +1 -1
  94. package/dist/commands/index.js +28 -28
  95. package/dist/commands/index.js.map +1 -1
  96. package/dist/commands/list/display.d.ts +39 -0
  97. package/dist/commands/list/display.d.ts.map +1 -0
  98. package/dist/commands/list/display.js +144 -0
  99. package/dist/commands/list/display.js.map +1 -0
  100. package/dist/commands/list/index.d.ts +12 -0
  101. package/dist/commands/list/index.d.ts.map +1 -0
  102. package/dist/commands/list/index.js +128 -0
  103. package/dist/commands/list/index.js.map +1 -0
  104. package/dist/commands/list/types.d.ts +32 -0
  105. package/dist/commands/list/types.d.ts.map +1 -0
  106. package/dist/commands/list/types.js +6 -0
  107. package/dist/commands/list/types.js.map +1 -0
  108. package/dist/commands/list.d.ts.map +1 -1
  109. package/dist/commands/list.js +2 -1
  110. package/dist/commands/list.js.map +1 -1
  111. package/dist/commands/load/display.d.ts +28 -0
  112. package/dist/commands/load/display.d.ts.map +1 -0
  113. package/dist/commands/load/display.js +53 -0
  114. package/dist/commands/load/display.js.map +1 -0
  115. package/dist/commands/load/handlers/copy-repo.d.ts +13 -0
  116. package/dist/commands/load/handlers/copy-repo.d.ts.map +1 -0
  117. package/dist/commands/load/handlers/copy-repo.js +82 -0
  118. package/dist/commands/load/handlers/copy-repo.js.map +1 -0
  119. package/dist/commands/load/handlers/index.d.ts +6 -0
  120. package/dist/commands/load/handlers/index.d.ts.map +1 -0
  121. package/dist/commands/load/handlers/index.js +11 -0
  122. package/dist/commands/load/handlers/index.js.map +1 -0
  123. package/dist/commands/load/handlers/url-add.d.ts +13 -0
  124. package/dist/commands/load/handlers/url-add.d.ts.map +1 -0
  125. package/dist/commands/load/handlers/url-add.js +50 -0
  126. package/dist/commands/load/handlers/url-add.js.map +1 -0
  127. package/dist/commands/load/helpers.d.ts +81 -0
  128. package/dist/commands/load/helpers.d.ts.map +1 -0
  129. package/dist/commands/load/helpers.js +199 -0
  130. package/dist/commands/load/helpers.js.map +1 -0
  131. package/dist/commands/load/index.d.ts +13 -0
  132. package/dist/commands/load/index.d.ts.map +1 -0
  133. package/dist/commands/load/index.js +46 -0
  134. package/dist/commands/load/index.js.map +1 -0
  135. package/dist/commands/load/types.d.ts +37 -0
  136. package/dist/commands/load/types.d.ts.map +1 -0
  137. package/dist/commands/load/types.js +6 -0
  138. package/dist/commands/load/types.js.map +1 -0
  139. package/dist/commands/load.d.ts.map +1 -1
  140. package/dist/commands/load.js +4 -3
  141. package/dist/commands/load.js.map +1 -1
  142. package/dist/commands/options/all.d.ts +11 -0
  143. package/dist/commands/options/all.d.ts.map +1 -0
  144. package/dist/commands/options/all.js +14 -0
  145. package/dist/commands/options/all.js.map +1 -0
  146. package/dist/commands/options/branch.d.ts +11 -0
  147. package/dist/commands/options/branch.d.ts.map +1 -0
  148. package/dist/commands/options/branch.js +14 -0
  149. package/dist/commands/options/branch.js.map +1 -0
  150. package/dist/commands/options/check.d.ts +11 -0
  151. package/dist/commands/options/check.d.ts.map +1 -0
  152. package/dist/commands/options/check.js +14 -0
  153. package/dist/commands/options/check.js.map +1 -0
  154. package/dist/commands/options/clean-empty.d.ts +11 -0
  155. package/dist/commands/options/clean-empty.d.ts.map +1 -0
  156. package/dist/commands/options/clean-empty.js +14 -0
  157. package/dist/commands/options/clean-empty.js.map +1 -0
  158. package/dist/commands/options/depth.d.ts +11 -0
  159. package/dist/commands/options/depth.d.ts.map +1 -0
  160. package/dist/commands/options/depth.js +14 -0
  161. package/dist/commands/options/depth.js.map +1 -0
  162. package/dist/commands/options/dry-run.d.ts +11 -0
  163. package/dist/commands/options/dry-run.d.ts.map +1 -0
  164. package/dist/commands/options/dry-run.js +14 -0
  165. package/dist/commands/options/dry-run.js.map +1 -0
  166. package/dist/commands/options/force.d.ts +11 -0
  167. package/dist/commands/options/force.d.ts.map +1 -0
  168. package/dist/commands/options/force.js +14 -0
  169. package/dist/commands/options/force.js.map +1 -0
  170. package/dist/commands/options/index.d.ts +24 -0
  171. package/dist/commands/options/index.d.ts.map +1 -0
  172. package/dist/commands/options/index.js +53 -0
  173. package/dist/commands/options/index.js.map +1 -0
  174. package/dist/commands/options/json.d.ts +11 -0
  175. package/dist/commands/options/json.d.ts.map +1 -0
  176. package/dist/commands/options/json.js +14 -0
  177. package/dist/commands/options/json.js.map +1 -0
  178. package/dist/commands/options/keep-empty.d.ts +11 -0
  179. package/dist/commands/options/keep-empty.d.ts.map +1 -0
  180. package/dist/commands/options/keep-empty.js +14 -0
  181. package/dist/commands/options/keep-empty.js.map +1 -0
  182. package/dist/commands/options/list.d.ts +11 -0
  183. package/dist/commands/options/list.d.ts.map +1 -0
  184. package/dist/commands/options/list.js +14 -0
  185. package/dist/commands/options/list.js.map +1 -0
  186. package/dist/commands/options/name.d.ts +11 -0
  187. package/dist/commands/options/name.d.ts.map +1 -0
  188. package/dist/commands/options/name.js +14 -0
  189. package/dist/commands/options/name.js.map +1 -0
  190. package/dist/commands/options/no-ignore.d.ts +11 -0
  191. package/dist/commands/options/no-ignore.d.ts.map +1 -0
  192. package/dist/commands/options/no-ignore.js +14 -0
  193. package/dist/commands/options/no-ignore.js.map +1 -0
  194. package/dist/commands/options/path.d.ts +11 -0
  195. package/dist/commands/options/path.d.ts.map +1 -0
  196. package/dist/commands/options/path.js +14 -0
  197. package/dist/commands/options/path.js.map +1 -0
  198. package/dist/commands/options/shallow.d.ts +16 -0
  199. package/dist/commands/options/shallow.d.ts.map +1 -0
  200. package/dist/commands/options/shallow.js +19 -0
  201. package/dist/commands/options/shallow.js.map +1 -0
  202. package/dist/commands/options/status.d.ts +11 -0
  203. package/dist/commands/options/status.d.ts.map +1 -0
  204. package/dist/commands/options/status.js +14 -0
  205. package/dist/commands/options/status.js.map +1 -0
  206. package/dist/commands/options/subdir.d.ts +11 -0
  207. package/dist/commands/options/subdir.d.ts.map +1 -0
  208. package/dist/commands/options/subdir.js +14 -0
  209. package/dist/commands/options/subdir.js.map +1 -0
  210. package/dist/commands/options/sync-only.d.ts +11 -0
  211. package/dist/commands/options/sync-only.d.ts.map +1 -0
  212. package/dist/commands/options/sync-only.js +14 -0
  213. package/dist/commands/options/sync-only.js.map +1 -0
  214. package/dist/commands/options/sync.d.ts +11 -0
  215. package/dist/commands/options/sync.d.ts.map +1 -0
  216. package/dist/commands/options/sync.js +14 -0
  217. package/dist/commands/options/sync.js.map +1 -0
  218. package/dist/commands/options/verbose.d.ts +11 -0
  219. package/dist/commands/options/verbose.d.ts.map +1 -0
  220. package/dist/commands/options/verbose.js +14 -0
  221. package/dist/commands/options/verbose.js.map +1 -0
  222. package/dist/commands/unload/display.d.ts +29 -0
  223. package/dist/commands/unload/display.d.ts.map +1 -0
  224. package/dist/commands/unload/display.js +125 -0
  225. package/dist/commands/unload/display.js.map +1 -0
  226. package/dist/commands/unload/handlers/clean-empty.d.ts +11 -0
  227. package/dist/commands/unload/handlers/clean-empty.d.ts.map +1 -0
  228. package/dist/commands/unload/handlers/clean-empty.js +111 -0
  229. package/dist/commands/unload/handlers/clean-empty.js.map +1 -0
  230. package/dist/commands/unload/handlers/index.d.ts +8 -0
  231. package/dist/commands/unload/handlers/index.d.ts.map +1 -0
  232. package/dist/commands/unload/handlers/index.js +15 -0
  233. package/dist/commands/unload/handlers/index.js.map +1 -0
  234. package/dist/commands/unload/handlers/list.d.ts +11 -0
  235. package/dist/commands/unload/handlers/list.d.ts.map +1 -0
  236. package/dist/commands/unload/handlers/list.js +42 -0
  237. package/dist/commands/unload/handlers/list.js.map +1 -0
  238. package/dist/commands/unload/handlers/remove-all.d.ts +11 -0
  239. package/dist/commands/unload/handlers/remove-all.d.ts.map +1 -0
  240. package/dist/commands/unload/handlers/remove-all.js +184 -0
  241. package/dist/commands/unload/handlers/remove-all.js.map +1 -0
  242. package/dist/commands/unload/handlers/remove-single.d.ts +12 -0
  243. package/dist/commands/unload/handlers/remove-single.d.ts.map +1 -0
  244. package/dist/commands/unload/handlers/remove-single.js +217 -0
  245. package/dist/commands/unload/handlers/remove-single.js.map +1 -0
  246. package/dist/commands/unload/helpers.d.ts +55 -0
  247. package/dist/commands/unload/helpers.d.ts.map +1 -0
  248. package/dist/commands/unload/helpers.js +256 -0
  249. package/dist/commands/unload/helpers.js.map +1 -0
  250. package/dist/commands/unload/index.d.ts +12 -0
  251. package/dist/commands/unload/index.d.ts.map +1 -0
  252. package/dist/commands/unload/index.js +121 -0
  253. package/dist/commands/unload/index.js.map +1 -0
  254. package/dist/commands/unload/types.d.ts +53 -0
  255. package/dist/commands/unload/types.d.ts.map +1 -0
  256. package/dist/commands/unload/types.js +6 -0
  257. package/dist/commands/unload/types.js.map +1 -0
  258. package/dist/commands/unload.d.ts.map +1 -1
  259. package/dist/commands/unload.js +8 -7
  260. package/dist/commands/unload.js.map +1 -1
  261. package/dist/commands/update/display.d.ts +30 -0
  262. package/dist/commands/update/display.d.ts.map +1 -0
  263. package/dist/commands/update/display.js +161 -0
  264. package/dist/commands/update/display.js.map +1 -0
  265. package/dist/commands/update/handlers/index.d.ts +8 -0
  266. package/dist/commands/update/handlers/index.d.ts.map +1 -0
  267. package/dist/commands/update/handlers/index.js +15 -0
  268. package/dist/commands/update/handlers/index.js.map +1 -0
  269. package/dist/commands/update/handlers/status.d.ts +11 -0
  270. package/dist/commands/update/handlers/status.d.ts.map +1 -0
  271. package/dist/commands/update/handlers/status.js +20 -0
  272. package/dist/commands/update/handlers/status.js.map +1 -0
  273. package/dist/commands/update/handlers/sync-only.d.ts +11 -0
  274. package/dist/commands/update/handlers/sync-only.d.ts.map +1 -0
  275. package/dist/commands/update/handlers/sync-only.js +41 -0
  276. package/dist/commands/update/handlers/sync-only.js.map +1 -0
  277. package/dist/commands/update/handlers/update-all.d.ts +10 -0
  278. package/dist/commands/update/handlers/update-all.d.ts.map +1 -0
  279. package/dist/commands/update/handlers/update-all.js +125 -0
  280. package/dist/commands/update/handlers/update-all.js.map +1 -0
  281. package/dist/commands/update/handlers/update-single.d.ts +11 -0
  282. package/dist/commands/update/handlers/update-single.d.ts.map +1 -0
  283. package/dist/commands/update/handlers/update-single.js +154 -0
  284. package/dist/commands/update/handlers/update-single.js.map +1 -0
  285. package/dist/commands/update/helpers.d.ts +13 -0
  286. package/dist/commands/update/helpers.d.ts.map +1 -0
  287. package/dist/commands/update/helpers.js +86 -0
  288. package/dist/commands/update/helpers.js.map +1 -0
  289. package/dist/commands/update/index.d.ts +12 -0
  290. package/dist/commands/update/index.d.ts.map +1 -0
  291. package/dist/commands/update/index.js +67 -0
  292. package/dist/commands/update/index.js.map +1 -0
  293. package/dist/commands/update/types.d.ts +55 -0
  294. package/dist/commands/update/types.d.ts.map +1 -0
  295. package/dist/commands/update/types.js +6 -0
  296. package/dist/commands/update/types.js.map +1 -0
  297. package/dist/commands/update.d.ts.map +1 -1
  298. package/dist/commands/update.js +7 -6
  299. package/dist/commands/update.js.map +1 -1
  300. package/dist/core/filesystem.js +1 -1
  301. package/dist/core/filesystem.js.map +1 -1
  302. package/dist/core/loading-state.d.ts +32 -16
  303. package/dist/core/loading-state.d.ts.map +1 -1
  304. package/dist/core/loading-state.js +51 -26
  305. package/dist/core/loading-state.js.map +1 -1
  306. package/dist/core/loading.d.ts +4 -2
  307. package/dist/core/loading.d.ts.map +1 -1
  308. package/dist/core/loading.js +37 -35
  309. package/dist/core/loading.js.map +1 -1
  310. package/dist/core/migration.d.ts.map +1 -1
  311. package/dist/core/migration.js +1 -3
  312. package/dist/core/migration.js.map +1 -1
  313. package/dist/core/repository.js +2 -2
  314. package/dist/core/repository.js.map +1 -1
  315. package/dist/core/sync.d.ts.map +1 -1
  316. package/dist/core/sync.js.map +1 -1
  317. package/dist/types/index.d.ts +2 -0
  318. package/dist/types/index.d.ts.map +1 -1
  319. package/dist/ui/format.d.ts.map +1 -1
  320. package/dist/ui/format.js.map +1 -1
  321. package/dist/ui/table.d.ts +2 -2
  322. package/dist/ui/table.d.ts.map +1 -1
  323. package/dist/ui/table.js.map +1 -1
  324. package/package.json +23 -3
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 删除单个仓库逻辑
3
+ */
4
+ import { UnloadContext } from "../types.js";
5
+ /**
6
+ * 处理删除单个仓库
7
+ * @param context unload 命令上下文
8
+ * @param name 仓库名称
9
+ * @returns 是否已处理(true 表示命令应该结束)
10
+ */
11
+ export declare function handleRemoveSingle(context: UnloadContext, name: string): Promise<boolean>;
12
+ //# sourceMappingURL=remove-single.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-single.d.ts","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/remove-single.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQ5C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAqMlB"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ /**
3
+ * 删除单个仓库逻辑
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.handleRemoveSingle = handleRemoveSingle;
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 loading_state_js_1 = require("../../../core/loading-state.js");
48
+ const spinner_js_1 = require("../../../ui/spinner.js");
49
+ const prompt_js_1 = require("../../../ui/prompt.js");
50
+ const helpers_js_1 = require("../helpers.js");
51
+ const display_js_1 = require("../display.js");
52
+ const constants_js_1 = require("../../../utils/constants.js");
53
+ /** .gitreference 目录名(使用共享常量) */
54
+ const GITREFERENCE_DIR = constants_js_1.DIR_NAMES.GITREFERENCE;
55
+ /**
56
+ * 处理删除单个仓库
57
+ * @param context unload 命令上下文
58
+ * @param name 仓库名称
59
+ * @returns 是否已处理(true 表示命令应该结束)
60
+ */
61
+ async function handleRemoveSingle(context, name) {
62
+ const { cwd, gitrefDir, gitrefDirExists, loadedEntries, options, startTime } = context;
63
+ // 匹配条目
64
+ const matches = (0, helpers_js_1.matchEntries)(loadedEntries, name);
65
+ if (matches.length === 0) {
66
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} No matching reference code found: ${name}`));
67
+ console.log();
68
+ console.log(`Use '${chalk_1.default.cyan("grf unload --list")}' to see all loaded reference code.`);
69
+ process.exit(1);
70
+ }
71
+ let targetEntry;
72
+ if (matches.length > 1) {
73
+ // 如果使用了 --force 选项,仍然需要精确指定
74
+ if (options.force) {
75
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} Found multiple matching reference code:`));
76
+ console.log();
77
+ for (const match of matches) {
78
+ console.log(` - ${match.repoName} -> ${match.targetPath}`);
79
+ }
80
+ console.log();
81
+ console.log(`Please use full path to specify exactly which reference code to delete.`);
82
+ process.exit(1);
83
+ }
84
+ // 交互式选择
85
+ const selected = await (0, display_js_1.selectEntry)(matches, name);
86
+ if (!selected) {
87
+ console.log(chalk_1.default.yellow("Operation cancelled."));
88
+ return true;
89
+ }
90
+ targetEntry = selected;
91
+ console.log();
92
+ }
93
+ else {
94
+ targetEntry = matches[0];
95
+ }
96
+ const displayName = targetEntry.repoName.replace(/\\/g, "/");
97
+ const displayPath = targetEntry.targetPath.replace(/\\/g, "/");
98
+ // 优先使用 workingDirectory,如果不存在则回退到 cwd
99
+ const baseDir = targetEntry.workingDirectory || cwd;
100
+ const absolutePath = path_1.default.resolve(baseDir, targetEntry.targetPath);
101
+ const pathExists = await filesystem.exists(absolutePath);
102
+ // 显示将要删除的内容
103
+ console.log(`Will delete: ${chalk_1.default.cyan(displayName)}`);
104
+ console.log(` Target path: ${chalk_1.default.gray(displayPath)}`);
105
+ if (!pathExists) {
106
+ console.log(chalk_1.default.yellow(` (Note: Target path does not exist, will only remove record from loading.json)`));
107
+ }
108
+ if (options.verbose) {
109
+ console.log(` Absolute path: ${chalk_1.default.gray(absolutePath)}`);
110
+ console.log(` Commit: ${chalk_1.default.gray(targetEntry.commitId)}`);
111
+ if (targetEntry.branch) {
112
+ console.log(` Branch: ${chalk_1.default.gray(targetEntry.branch)}`);
113
+ }
114
+ }
115
+ console.log();
116
+ // dry-run 模式
117
+ if (options.dryRun) {
118
+ console.log(chalk_1.default.yellow("(Dry run mode, no actual deletion)"));
119
+ return true;
120
+ }
121
+ // 确认删除
122
+ if (!options.force) {
123
+ const confirmed = await (0, prompt_js_1.confirm)(`Are you sure you want to delete '${displayName}'?`);
124
+ if (!confirmed) {
125
+ console.log(chalk_1.default.yellow("Operation cancelled."));
126
+ return true;
127
+ }
128
+ }
129
+ // 执行删除
130
+ const spinner = (0, spinner_js_1.startSpinner)("Removing reference code...");
131
+ try {
132
+ // 删除实际文件/目录(如果存在)
133
+ if (pathExists) {
134
+ if (options.verbose) {
135
+ spinner.stop();
136
+ console.log(chalk_1.default.gray(` Removing directory: ${displayPath}`));
137
+ spinner.start();
138
+ }
139
+ await filesystem.removeDir(absolutePath);
140
+ // 递归删除空的父目录
141
+ // 使用 baseDir 计算正确的 gitrefDir
142
+ const entryGitrefDir = path_1.default.join(baseDir, ".gitreference");
143
+ if (targetEntry.targetPath.startsWith(".gitreference/") ||
144
+ targetEntry.targetPath.startsWith(GITREFERENCE_DIR + "/")) {
145
+ // 在 .gitreference 下,清理到 gitrefDir 为止
146
+ if (options.verbose) {
147
+ spinner.stop();
148
+ }
149
+ await (0, helpers_js_1.removeEmptyParents)(absolutePath, entryGitrefDir, options.verbose);
150
+ if (options.verbose) {
151
+ spinner.start();
152
+ }
153
+ }
154
+ else {
155
+ // 自定义路径,清理到工作目录为止
156
+ if (options.verbose) {
157
+ spinner.stop();
158
+ }
159
+ await (0, helpers_js_1.removeEmptyParents)(absolutePath, cwd, options.verbose);
160
+ if (options.verbose) {
161
+ spinner.start();
162
+ }
163
+ }
164
+ }
165
+ // 从 loading.json 中移除条目(使用 workingDirectory + targetPath 作为唯一键)
166
+ await (0, loading_state_js_1.markAsUnloaded)(targetEntry.workingDirectory || cwd, targetEntry.targetPath);
167
+ // 从 .gitignore 中清理对应条目
168
+ const gitignoreEntry = targetEntry.targetPath.endsWith("/")
169
+ ? targetEntry.targetPath
170
+ : targetEntry.targetPath + "/";
171
+ const gitignoreRemoved = await filesystem.removeFromGitignore(cwd, gitignoreEntry);
172
+ if (gitignoreRemoved && options.verbose) {
173
+ spinner.stop();
174
+ console.log(chalk_1.default.gray(` Removed ${gitignoreEntry} from .gitignore`));
175
+ spinner.start();
176
+ }
177
+ // 检查 .gitreference 目录是否为空
178
+ if (!options.keepEmpty && gitrefDirExists) {
179
+ try {
180
+ const remaining = await filesystem.readDir(gitrefDir);
181
+ // 当只剩 loading.json 或为空时删除整个目录
182
+ if (remaining.length === 0 ||
183
+ (remaining.length === 1 && remaining[0] === "loading.json")) {
184
+ // 检查 loading.json 是否还有其他条目
185
+ const remainingEntries = await loading.getEntries();
186
+ if (remainingEntries.length === 0) {
187
+ if (options.verbose) {
188
+ spinner.stop();
189
+ console.log(chalk_1.default.gray(` Removing empty .gitreference directory`));
190
+ spinner.start();
191
+ }
192
+ await filesystem.removeDir(gitrefDir);
193
+ // 从 .gitignore 中移除 .gitreference/ 条目
194
+ await filesystem.removeFromGitignore(cwd, ".gitreference/");
195
+ }
196
+ }
197
+ }
198
+ catch {
199
+ // 忽略错误
200
+ }
201
+ }
202
+ const elapsed = Date.now() - startTime;
203
+ spinner.succeed(chalk_1.default.green("Reference code removed!"));
204
+ console.log();
205
+ console.log(` ${chalk_1.default.gray("Repository:")} ${displayName}`);
206
+ console.log(` ${chalk_1.default.gray("Path:")} ${displayPath}`);
207
+ if (options.verbose) {
208
+ console.log(chalk_1.default.gray(` Time elapsed: ${elapsed}ms`));
209
+ }
210
+ }
211
+ catch (error) {
212
+ spinner.fail(chalk_1.default.red("Deletion failed"));
213
+ throw error;
214
+ }
215
+ return true;
216
+ }
217
+ //# sourceMappingURL=remove-single.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-single.js","sourceRoot":"","sources":["../../../../src/commands/unload/handlers/remove-single.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * unload 命令辅助函数
3
+ */
4
+ import { LoadingEntry } from "../../types/index.js";
5
+ import { EmptyDir } from "./types.js";
6
+ /**
7
+ * 从 loading.json 获取所有已加载的仓库条目
8
+ * @returns 加载条目列表
9
+ */
10
+ export declare function getLoadedEntries(): Promise<LoadingEntry[]>;
11
+ /**
12
+ * 递归扫描 .gitreference 目录以获取空目录列表
13
+ * @param baseDir .gitreference 目录的绝对路径
14
+ * @param currentPath 当前正在扫描的相对路径
15
+ * @param loadedPaths 已加载路径列表(用于排除)
16
+ * @returns 空目录列表
17
+ */
18
+ export declare function scanEmptyDirs(baseDir: string, currentPath?: string, loadedPaths?: Set<string>): Promise<EmptyDir[]>;
19
+ /**
20
+ * 匹配仓库条目
21
+ * @param entries 加载条目列表
22
+ * @param name 要匹配的名称(可以是 repoName、targetPath 或部分路径)
23
+ * @returns 匹配的条目列表
24
+ */
25
+ export declare function matchEntries(entries: LoadingEntry[], name: string): LoadingEntry[];
26
+ /**
27
+ * 递归删除空的父目录
28
+ * @param dirPath 起始目录路径
29
+ * @param stopAt 停止的目录(不会删除此目录)
30
+ * @param verbose 是否输出详细信息
31
+ */
32
+ export declare function removeEmptyParents(dirPath: string, stopAt: string, verbose?: boolean): Promise<void>;
33
+ /**
34
+ * 清理所有空目录
35
+ * @param gitrefDir .gitreference 目录的绝对路径
36
+ * @param emptyDirs 空目录列表
37
+ * @param verbose 是否输出详细信息
38
+ * @returns 清理的目录数量
39
+ */
40
+ export declare function cleanEmptyDirectories(gitrefDir: string, emptyDirs: EmptyDir[], verbose?: boolean): Promise<number>;
41
+ /**
42
+ * 在详细模式下删除目录
43
+ * @param dirPath 要删除的目录路径
44
+ * @param displayPath 用于显示的路径
45
+ * @param verbose 是否输出详细信息
46
+ */
47
+ export declare function removeDirVerbose(dirPath: string, displayPath: string, verbose: boolean): Promise<void>;
48
+ /**
49
+ * 从 .gitignore 中清理参考代码路径条目
50
+ * @param targetPath 已删除的目标路径(相对于工作目录)
51
+ * @param gitreferenceDirExists .gitreference 目录是否仍然存在
52
+ * @param verbose 是否输出详细信息
53
+ */
54
+ export declare function cleanupGitignore(targetPath: string, gitreferenceDirExists: boolean, verbose?: boolean): Promise<void>;
55
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/unload/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEhE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,SAAK,EAChB,WAAW,cAAoB,GAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC,CA+CrB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,MAAM,GACX,YAAY,EAAE,CAmChB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,UAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,UAAQ,GACd,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,OAAO,EAC9B,OAAO,UAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ /**
3
+ * unload 命令辅助函数
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.getLoadedEntries = getLoadedEntries;
43
+ exports.scanEmptyDirs = scanEmptyDirs;
44
+ exports.matchEntries = matchEntries;
45
+ exports.removeEmptyParents = removeEmptyParents;
46
+ exports.cleanEmptyDirectories = cleanEmptyDirectories;
47
+ exports.removeDirVerbose = removeDirVerbose;
48
+ exports.cleanupGitignore = cleanupGitignore;
49
+ const path_1 = __importDefault(require("path"));
50
+ const chalk_1 = __importDefault(require("chalk"));
51
+ const filesystem = __importStar(require("../../core/filesystem.js"));
52
+ const loading = __importStar(require("../../core/loading.js"));
53
+ const constants_js_1 = require("../../utils/constants.js");
54
+ /** .gitreference 目录名(使用共享常量) */
55
+ const GITREFERENCE_DIR = constants_js_1.DIR_NAMES.GITREFERENCE;
56
+ /**
57
+ * 从 loading.json 获取所有已加载的仓库条目
58
+ * @returns 加载条目列表
59
+ */
60
+ async function getLoadedEntries() {
61
+ return await loading.getEntries();
62
+ }
63
+ /**
64
+ * 递归扫描 .gitreference 目录以获取空目录列表
65
+ * @param baseDir .gitreference 目录的绝对路径
66
+ * @param currentPath 当前正在扫描的相对路径
67
+ * @param loadedPaths 已加载路径列表(用于排除)
68
+ * @returns 空目录列表
69
+ */
70
+ async function scanEmptyDirs(baseDir, currentPath = "", loadedPaths = new Set()) {
71
+ const emptyDirs = [];
72
+ const fullCurrentPath = path_1.default.join(baseDir, currentPath);
73
+ try {
74
+ const entries = await filesystem.readDir(fullCurrentPath);
75
+ // 如果目录为空,标记为空目录
76
+ if (entries.length === 0 && currentPath) {
77
+ emptyDirs.push({
78
+ fullPath: currentPath,
79
+ absolutePath: fullCurrentPath,
80
+ });
81
+ return emptyDirs;
82
+ }
83
+ // 检查当前目录是否包含非目录文件
84
+ let hasFiles = false;
85
+ const subdirs = [];
86
+ for (const entry of entries) {
87
+ const entryPath = path_1.default.join(fullCurrentPath, entry);
88
+ try {
89
+ const isDir = await filesystem.isDirectory(entryPath);
90
+ if (isDir) {
91
+ subdirs.push(entry);
92
+ }
93
+ else {
94
+ hasFiles = true;
95
+ }
96
+ }
97
+ catch {
98
+ // 忽略无法访问的条目
99
+ }
100
+ }
101
+ // 如果当前目录没有文件,继续递归扫描子目录
102
+ if (!hasFiles) {
103
+ for (const subdir of subdirs) {
104
+ const subPath = currentPath ? path_1.default.join(currentPath, subdir) : subdir;
105
+ const subEmptyDirs = await scanEmptyDirs(baseDir, subPath, loadedPaths);
106
+ emptyDirs.push(...subEmptyDirs);
107
+ }
108
+ }
109
+ }
110
+ catch {
111
+ // 目录不存在或无法访问
112
+ }
113
+ return emptyDirs;
114
+ }
115
+ /**
116
+ * 匹配仓库条目
117
+ * @param entries 加载条目列表
118
+ * @param name 要匹配的名称(可以是 repoName、targetPath 或部分路径)
119
+ * @returns 匹配的条目列表
120
+ */
121
+ function matchEntries(entries, name) {
122
+ const normalizedName = name.replace(/\\/g, "/");
123
+ return entries.filter((entry) => {
124
+ const repoName = entry.repoName.replace(/\\/g, "/");
125
+ const targetPath = entry.targetPath.replace(/\\/g, "/");
126
+ // 完整仓库名称匹配: github.com/facebook/react
127
+ if (repoName === normalizedName) {
128
+ return true;
129
+ }
130
+ // 完整目标路径匹配
131
+ if (targetPath === normalizedName) {
132
+ return true;
133
+ }
134
+ // 短仓库名称匹配: react -> 匹配所有名为 react 的仓库
135
+ const shortName = path_1.default.basename(repoName);
136
+ if (shortName === normalizedName) {
137
+ return true;
138
+ }
139
+ // 部分路径匹配: facebook/react -> 匹配 */facebook/react
140
+ if (repoName.endsWith("/" + normalizedName)) {
141
+ return true;
142
+ }
143
+ // 目标路径部分匹配
144
+ if (targetPath.endsWith("/" + normalizedName)) {
145
+ return true;
146
+ }
147
+ return false;
148
+ });
149
+ }
150
+ /**
151
+ * 递归删除空的父目录
152
+ * @param dirPath 起始目录路径
153
+ * @param stopAt 停止的目录(不会删除此目录)
154
+ * @param verbose 是否输出详细信息
155
+ */
156
+ async function removeEmptyParents(dirPath, stopAt, verbose = false) {
157
+ let currentDir = path_1.default.dirname(dirPath);
158
+ while (currentDir !== stopAt && currentDir.startsWith(stopAt)) {
159
+ try {
160
+ const entries = await filesystem.readDir(currentDir);
161
+ if (entries.length === 0) {
162
+ if (verbose) {
163
+ console.log(chalk_1.default.gray(` Cleaning empty directory: ${path_1.default.relative(stopAt, currentDir)}`));
164
+ }
165
+ await filesystem.removeDir(currentDir);
166
+ currentDir = path_1.default.dirname(currentDir);
167
+ }
168
+ else {
169
+ break;
170
+ }
171
+ }
172
+ catch {
173
+ break;
174
+ }
175
+ }
176
+ }
177
+ /**
178
+ * 清理所有空目录
179
+ * @param gitrefDir .gitreference 目录的绝对路径
180
+ * @param emptyDirs 空目录列表
181
+ * @param verbose 是否输出详细信息
182
+ * @returns 清理的目录数量
183
+ */
184
+ async function cleanEmptyDirectories(gitrefDir, emptyDirs, verbose = false) {
185
+ let cleanedCount = 0;
186
+ // 按路径深度排序,先删除最深的目录
187
+ const sortedDirs = [...emptyDirs].sort((a, b) => {
188
+ const depthA = a.fullPath.split(path_1.default.sep).length;
189
+ const depthB = b.fullPath.split(path_1.default.sep).length;
190
+ return depthB - depthA;
191
+ });
192
+ for (const dir of sortedDirs) {
193
+ try {
194
+ // 检查目录是否仍然存在且为空
195
+ if (await filesystem.exists(dir.absolutePath)) {
196
+ const entries = await filesystem.readDir(dir.absolutePath);
197
+ if (entries.length === 0) {
198
+ if (verbose) {
199
+ console.log(chalk_1.default.gray(` Removing empty directory: ${dir.fullPath.replace(/\\/g, "/")}`));
200
+ }
201
+ await filesystem.removeDir(dir.absolutePath);
202
+ cleanedCount++;
203
+ // 递归清理空的父目录
204
+ await removeEmptyParents(dir.absolutePath, gitrefDir, verbose);
205
+ }
206
+ }
207
+ }
208
+ catch {
209
+ // 忽略删除失败的目录
210
+ }
211
+ }
212
+ return cleanedCount;
213
+ }
214
+ /**
215
+ * 在详细模式下删除目录
216
+ * @param dirPath 要删除的目录路径
217
+ * @param displayPath 用于显示的路径
218
+ * @param verbose 是否输出详细信息
219
+ */
220
+ async function removeDirVerbose(dirPath, displayPath, verbose) {
221
+ if (verbose) {
222
+ console.log(chalk_1.default.gray(` Removing directory: ${displayPath}`));
223
+ }
224
+ await filesystem.removeDir(dirPath);
225
+ }
226
+ /**
227
+ * 从 .gitignore 中清理参考代码路径条目
228
+ * @param targetPath 已删除的目标路径(相对于工作目录)
229
+ * @param gitreferenceDirExists .gitreference 目录是否仍然存在
230
+ * @param verbose 是否输出详细信息
231
+ */
232
+ async function cleanupGitignore(targetPath, gitreferenceDirExists, verbose = false) {
233
+ const cwd = process.cwd();
234
+ // 如果删除的是 .gitreference 目录下的内容
235
+ if (targetPath.startsWith(".gitreference") ||
236
+ targetPath.startsWith(GITREFERENCE_DIR)) {
237
+ // 只有当目录不存在或为空时才从 .gitignore 中移除 .gitreference/ 条目
238
+ if (!gitreferenceDirExists) {
239
+ const removed = await filesystem.removeFromGitignore(cwd, ".gitreference/");
240
+ if (removed && verbose) {
241
+ console.log(chalk_1.default.gray(" Removed .gitreference/ from .gitignore"));
242
+ }
243
+ }
244
+ }
245
+ else {
246
+ // 如果是自定义路径,直接移除对应的 .gitignore 条目
247
+ const gitignoreEntry = targetPath.endsWith("/")
248
+ ? targetPath
249
+ : targetPath + "/";
250
+ const removed = await filesystem.removeFromGitignore(cwd, gitignoreEntry);
251
+ if (removed && verbose) {
252
+ console.log(chalk_1.default.gray(` Removed ${gitignoreEntry} from .gitignore`));
253
+ }
254
+ }
255
+ }
256
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/unload/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * unload 命令
3
+ * 从当前项目中移除已加载的参考代码(use 命令的逆操作)
4
+ */
5
+ import { Command } from "commander";
6
+ /**
7
+ * 注册 unload 命令
8
+ * @param program Commander 程序实例
9
+ */
10
+ export declare function registerUnloadCommand(program: Command): void;
11
+ export declare const unloadCommand: Command;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/unload/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5D;AAED,eAAO,MAAM,aAAa,SAkEtB,CAAC"}