@cicore/cli 1.0.0

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 (337) hide show
  1. package/bin/ci.js +13 -0
  2. package/dist/commands/addon/api-actions.d.ts +45 -0
  3. package/dist/commands/addon/api-actions.d.ts.map +1 -0
  4. package/dist/commands/addon/api-actions.js +281 -0
  5. package/dist/commands/addon/api-actions.js.map +1 -0
  6. package/dist/commands/addon/build.d.ts +11 -0
  7. package/dist/commands/addon/build.d.ts.map +1 -0
  8. package/dist/commands/addon/build.js +182 -0
  9. package/dist/commands/addon/build.js.map +1 -0
  10. package/dist/commands/addon/create.d.ts +11 -0
  11. package/dist/commands/addon/create.d.ts.map +1 -0
  12. package/dist/commands/addon/create.js +1186 -0
  13. package/dist/commands/addon/create.js.map +1 -0
  14. package/dist/commands/addon/delete.d.ts +13 -0
  15. package/dist/commands/addon/delete.d.ts.map +1 -0
  16. package/dist/commands/addon/delete.js +83 -0
  17. package/dist/commands/addon/delete.js.map +1 -0
  18. package/dist/commands/addon/deploy.d.ts +27 -0
  19. package/dist/commands/addon/deploy.d.ts.map +1 -0
  20. package/dist/commands/addon/deploy.js +459 -0
  21. package/dist/commands/addon/deploy.js.map +1 -0
  22. package/dist/commands/addon/dev-deploy.d.ts +31 -0
  23. package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
  24. package/dist/commands/addon/dev-deploy.js +128 -0
  25. package/dist/commands/addon/dev-deploy.js.map +1 -0
  26. package/dist/commands/addon/dev.d.ts +36 -0
  27. package/dist/commands/addon/dev.d.ts.map +1 -0
  28. package/dist/commands/addon/dev.js +323 -0
  29. package/dist/commands/addon/dev.js.map +1 -0
  30. package/dist/commands/addon/extract-classes.d.ts +23 -0
  31. package/dist/commands/addon/extract-classes.d.ts.map +1 -0
  32. package/dist/commands/addon/extract-classes.js +281 -0
  33. package/dist/commands/addon/extract-classes.js.map +1 -0
  34. package/dist/commands/addon/generate-safelist.d.ts +24 -0
  35. package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
  36. package/dist/commands/addon/generate-safelist.js +276 -0
  37. package/dist/commands/addon/generate-safelist.js.map +1 -0
  38. package/dist/commands/addon/index.d.ts +19 -0
  39. package/dist/commands/addon/index.d.ts.map +1 -0
  40. package/dist/commands/addon/index.js +296 -0
  41. package/dist/commands/addon/index.js.map +1 -0
  42. package/dist/commands/addon/init-repo.d.ts +25 -0
  43. package/dist/commands/addon/init-repo.d.ts.map +1 -0
  44. package/dist/commands/addon/init-repo.js +171 -0
  45. package/dist/commands/addon/init-repo.js.map +1 -0
  46. package/dist/commands/addon/install.d.ts +23 -0
  47. package/dist/commands/addon/install.d.ts.map +1 -0
  48. package/dist/commands/addon/install.js +84 -0
  49. package/dist/commands/addon/install.js.map +1 -0
  50. package/dist/commands/addon/list.d.ts +10 -0
  51. package/dist/commands/addon/list.d.ts.map +1 -0
  52. package/dist/commands/addon/list.js +102 -0
  53. package/dist/commands/addon/list.js.map +1 -0
  54. package/dist/commands/addon/manifest-refresh.d.ts +17 -0
  55. package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
  56. package/dist/commands/addon/manifest-refresh.js +48 -0
  57. package/dist/commands/addon/manifest-refresh.js.map +1 -0
  58. package/dist/commands/addon/migrate.d.ts +40 -0
  59. package/dist/commands/addon/migrate.d.ts.map +1 -0
  60. package/dist/commands/addon/migrate.js +236 -0
  61. package/dist/commands/addon/migrate.js.map +1 -0
  62. package/dist/commands/addon/publish.d.ts +33 -0
  63. package/dist/commands/addon/publish.d.ts.map +1 -0
  64. package/dist/commands/addon/publish.js +236 -0
  65. package/dist/commands/addon/publish.js.map +1 -0
  66. package/dist/commands/addon/scaffold-quality.d.ts +21 -0
  67. package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
  68. package/dist/commands/addon/scaffold-quality.js +90 -0
  69. package/dist/commands/addon/scaffold-quality.js.map +1 -0
  70. package/dist/commands/addon/sign.d.ts +9 -0
  71. package/dist/commands/addon/sign.d.ts.map +1 -0
  72. package/dist/commands/addon/sign.js +83 -0
  73. package/dist/commands/addon/sign.js.map +1 -0
  74. package/dist/commands/addon/toggle.d.ts +6 -0
  75. package/dist/commands/addon/toggle.d.ts.map +1 -0
  76. package/dist/commands/addon/toggle.js +46 -0
  77. package/dist/commands/addon/toggle.js.map +1 -0
  78. package/dist/commands/agent/index.d.ts +34 -0
  79. package/dist/commands/agent/index.d.ts.map +1 -0
  80. package/dist/commands/agent/index.js +564 -0
  81. package/dist/commands/agent/index.js.map +1 -0
  82. package/dist/commands/brand/index.d.ts +54 -0
  83. package/dist/commands/brand/index.d.ts.map +1 -0
  84. package/dist/commands/brand/index.js +367 -0
  85. package/dist/commands/brand/index.js.map +1 -0
  86. package/dist/commands/build/index.d.ts +53 -0
  87. package/dist/commands/build/index.d.ts.map +1 -0
  88. package/dist/commands/build/index.js +726 -0
  89. package/dist/commands/build/index.js.map +1 -0
  90. package/dist/commands/cache/flush-local.d.ts +31 -0
  91. package/dist/commands/cache/flush-local.d.ts.map +1 -0
  92. package/dist/commands/cache/flush-local.js +161 -0
  93. package/dist/commands/cache/flush-local.js.map +1 -0
  94. package/dist/commands/cache/index.d.ts +14 -0
  95. package/dist/commands/cache/index.d.ts.map +1 -0
  96. package/dist/commands/cache/index.js +453 -0
  97. package/dist/commands/cache/index.js.map +1 -0
  98. package/dist/commands/check/index.d.ts +8 -0
  99. package/dist/commands/check/index.d.ts.map +1 -0
  100. package/dist/commands/check/index.js +1316 -0
  101. package/dist/commands/check/index.js.map +1 -0
  102. package/dist/commands/cloudflare/index.d.ts +8 -0
  103. package/dist/commands/cloudflare/index.d.ts.map +1 -0
  104. package/dist/commands/cloudflare/index.js +453 -0
  105. package/dist/commands/cloudflare/index.js.map +1 -0
  106. package/dist/commands/core/create.d.ts +12 -0
  107. package/dist/commands/core/create.d.ts.map +1 -0
  108. package/dist/commands/core/create.js +206 -0
  109. package/dist/commands/core/create.js.map +1 -0
  110. package/dist/commands/core/delete.d.ts +11 -0
  111. package/dist/commands/core/delete.d.ts.map +1 -0
  112. package/dist/commands/core/delete.js +64 -0
  113. package/dist/commands/core/delete.js.map +1 -0
  114. package/dist/commands/core/env.d.ts +12 -0
  115. package/dist/commands/core/env.d.ts.map +1 -0
  116. package/dist/commands/core/env.js +95 -0
  117. package/dist/commands/core/env.js.map +1 -0
  118. package/dist/commands/core/health.d.ts +6 -0
  119. package/dist/commands/core/health.d.ts.map +1 -0
  120. package/dist/commands/core/health.js +215 -0
  121. package/dist/commands/core/health.js.map +1 -0
  122. package/dist/commands/core/index.d.ts +15 -0
  123. package/dist/commands/core/index.d.ts.map +1 -0
  124. package/dist/commands/core/index.js +86 -0
  125. package/dist/commands/core/index.js.map +1 -0
  126. package/dist/commands/core/list.d.ts +11 -0
  127. package/dist/commands/core/list.d.ts.map +1 -0
  128. package/dist/commands/core/list.js +58 -0
  129. package/dist/commands/core/list.js.map +1 -0
  130. package/dist/commands/core/rebuild.d.ts +13 -0
  131. package/dist/commands/core/rebuild.d.ts.map +1 -0
  132. package/dist/commands/core/rebuild.js +119 -0
  133. package/dist/commands/core/rebuild.js.map +1 -0
  134. package/dist/commands/db/index.d.ts +23 -0
  135. package/dist/commands/db/index.d.ts.map +1 -0
  136. package/dist/commands/db/index.js +355 -0
  137. package/dist/commands/db/index.js.map +1 -0
  138. package/dist/commands/db/promote-silo.d.ts +320 -0
  139. package/dist/commands/db/promote-silo.d.ts.map +1 -0
  140. package/dist/commands/db/promote-silo.js +930 -0
  141. package/dist/commands/db/promote-silo.js.map +1 -0
  142. package/dist/commands/db/relocate.d.ts +41 -0
  143. package/dist/commands/db/relocate.d.ts.map +1 -0
  144. package/dist/commands/db/relocate.js +482 -0
  145. package/dist/commands/db/relocate.js.map +1 -0
  146. package/dist/commands/db/rollback-silo.d.ts +44 -0
  147. package/dist/commands/db/rollback-silo.d.ts.map +1 -0
  148. package/dist/commands/db/rollback-silo.js +402 -0
  149. package/dist/commands/db/rollback-silo.js.map +1 -0
  150. package/dist/commands/deploy/index.d.ts +26 -0
  151. package/dist/commands/deploy/index.d.ts.map +1 -0
  152. package/dist/commands/deploy/index.js +107 -0
  153. package/dist/commands/deploy/index.js.map +1 -0
  154. package/dist/commands/devops/index.d.ts +6 -0
  155. package/dist/commands/devops/index.d.ts.map +1 -0
  156. package/dist/commands/devops/index.js +220 -0
  157. package/dist/commands/devops/index.js.map +1 -0
  158. package/dist/commands/domain/index.d.ts +8 -0
  159. package/dist/commands/domain/index.d.ts.map +1 -0
  160. package/dist/commands/domain/index.js +386 -0
  161. package/dist/commands/domain/index.js.map +1 -0
  162. package/dist/commands/image/index.d.ts +8 -0
  163. package/dist/commands/image/index.d.ts.map +1 -0
  164. package/dist/commands/image/index.js +308 -0
  165. package/dist/commands/image/index.js.map +1 -0
  166. package/dist/commands/install/factory-reset.d.ts +21 -0
  167. package/dist/commands/install/factory-reset.d.ts.map +1 -0
  168. package/dist/commands/install/factory-reset.js +83 -0
  169. package/dist/commands/install/factory-reset.js.map +1 -0
  170. package/dist/commands/install/index.d.ts +17 -0
  171. package/dist/commands/install/index.d.ts.map +1 -0
  172. package/dist/commands/install/index.js +44 -0
  173. package/dist/commands/install/index.js.map +1 -0
  174. package/dist/commands/install/install.d.ts +35 -0
  175. package/dist/commands/install/install.d.ts.map +1 -0
  176. package/dist/commands/install/install.js +171 -0
  177. package/dist/commands/install/install.js.map +1 -0
  178. package/dist/commands/login/index.d.ts +15 -0
  179. package/dist/commands/login/index.d.ts.map +1 -0
  180. package/dist/commands/login/index.js +58 -0
  181. package/dist/commands/login/index.js.map +1 -0
  182. package/dist/commands/nginx/index.d.ts +11 -0
  183. package/dist/commands/nginx/index.d.ts.map +1 -0
  184. package/dist/commands/nginx/index.js +580 -0
  185. package/dist/commands/nginx/index.js.map +1 -0
  186. package/dist/commands/server/bootstrap.d.ts +25 -0
  187. package/dist/commands/server/bootstrap.d.ts.map +1 -0
  188. package/dist/commands/server/bootstrap.js +260 -0
  189. package/dist/commands/server/bootstrap.js.map +1 -0
  190. package/dist/commands/server/index.d.ts +8 -0
  191. package/dist/commands/server/index.d.ts.map +1 -0
  192. package/dist/commands/server/index.js +2524 -0
  193. package/dist/commands/server/index.js.map +1 -0
  194. package/dist/commands/setup/index.d.ts +34 -0
  195. package/dist/commands/setup/index.d.ts.map +1 -0
  196. package/dist/commands/setup/index.js +423 -0
  197. package/dist/commands/setup/index.js.map +1 -0
  198. package/dist/commands/ssl/index.d.ts +8 -0
  199. package/dist/commands/ssl/index.d.ts.map +1 -0
  200. package/dist/commands/ssl/index.js +275 -0
  201. package/dist/commands/ssl/index.js.map +1 -0
  202. package/dist/commands/superadmin/index.d.ts +16 -0
  203. package/dist/commands/superadmin/index.d.ts.map +1 -0
  204. package/dist/commands/superadmin/index.js +81 -0
  205. package/dist/commands/superadmin/index.js.map +1 -0
  206. package/dist/commands/tenant/index.d.ts +6 -0
  207. package/dist/commands/tenant/index.d.ts.map +1 -0
  208. package/dist/commands/tenant/index.js +192 -0
  209. package/dist/commands/tenant/index.js.map +1 -0
  210. package/dist/index.d.ts +11 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +107 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/lib/addon-sign.d.ts +23 -0
  215. package/dist/lib/addon-sign.d.ts.map +1 -0
  216. package/dist/lib/addon-sign.js +39 -0
  217. package/dist/lib/addon-sign.js.map +1 -0
  218. package/dist/lib/addon-sign.test.d.ts +2 -0
  219. package/dist/lib/addon-sign.test.d.ts.map +1 -0
  220. package/dist/lib/addon-sign.test.js +27 -0
  221. package/dist/lib/addon-sign.test.js.map +1 -0
  222. package/dist/lib/cdn.d.ts +25 -0
  223. package/dist/lib/cdn.d.ts.map +1 -0
  224. package/dist/lib/cdn.js +131 -0
  225. package/dist/lib/cdn.js.map +1 -0
  226. package/dist/lib/cloudflare.d.ts +133 -0
  227. package/dist/lib/cloudflare.d.ts.map +1 -0
  228. package/dist/lib/cloudflare.js +435 -0
  229. package/dist/lib/cloudflare.js.map +1 -0
  230. package/dist/lib/config.d.ts +96 -0
  231. package/dist/lib/config.d.ts.map +1 -0
  232. package/dist/lib/config.js +132 -0
  233. package/dist/lib/config.js.map +1 -0
  234. package/dist/lib/env.d.ts +8 -0
  235. package/dist/lib/env.d.ts.map +1 -0
  236. package/dist/lib/env.js +64 -0
  237. package/dist/lib/env.js.map +1 -0
  238. package/dist/lib/hosts.d.ts +194 -0
  239. package/dist/lib/hosts.d.ts.map +1 -0
  240. package/dist/lib/hosts.js +183 -0
  241. package/dist/lib/hosts.js.map +1 -0
  242. package/dist/lib/logger.d.ts +68 -0
  243. package/dist/lib/logger.d.ts.map +1 -0
  244. package/dist/lib/logger.js +130 -0
  245. package/dist/lib/logger.js.map +1 -0
  246. package/dist/lib/nginx-config.d.ts +78 -0
  247. package/dist/lib/nginx-config.d.ts.map +1 -0
  248. package/dist/lib/nginx-config.js +736 -0
  249. package/dist/lib/nginx-config.js.map +1 -0
  250. package/dist/lib/ops/addon-dev.d.ts +93 -0
  251. package/dist/lib/ops/addon-dev.d.ts.map +1 -0
  252. package/dist/lib/ops/addon-dev.js +237 -0
  253. package/dist/lib/ops/addon-dev.js.map +1 -0
  254. package/dist/lib/ops/addon-quality.d.ts +38 -0
  255. package/dist/lib/ops/addon-quality.d.ts.map +1 -0
  256. package/dist/lib/ops/addon-quality.js +338 -0
  257. package/dist/lib/ops/addon-quality.js.map +1 -0
  258. package/dist/lib/ops/addon-routes.d.ts +49 -0
  259. package/dist/lib/ops/addon-routes.d.ts.map +1 -0
  260. package/dist/lib/ops/addon-routes.js +189 -0
  261. package/dist/lib/ops/addon-routes.js.map +1 -0
  262. package/dist/lib/ops/addon.d.ts +120 -0
  263. package/dist/lib/ops/addon.d.ts.map +1 -0
  264. package/dist/lib/ops/addon.js +260 -0
  265. package/dist/lib/ops/addon.js.map +1 -0
  266. package/dist/lib/ops/cdn.d.ts +87 -0
  267. package/dist/lib/ops/cdn.d.ts.map +1 -0
  268. package/dist/lib/ops/cdn.js +170 -0
  269. package/dist/lib/ops/cdn.js.map +1 -0
  270. package/dist/lib/ops/cf.d.ts +36 -0
  271. package/dist/lib/ops/cf.d.ts.map +1 -0
  272. package/dist/lib/ops/cf.js +114 -0
  273. package/dist/lib/ops/cf.js.map +1 -0
  274. package/dist/lib/ops/compose.d.ts +95 -0
  275. package/dist/lib/ops/compose.d.ts.map +1 -0
  276. package/dist/lib/ops/compose.js +165 -0
  277. package/dist/lib/ops/compose.js.map +1 -0
  278. package/dist/lib/ops/core.d.ts +117 -0
  279. package/dist/lib/ops/core.d.ts.map +1 -0
  280. package/dist/lib/ops/core.js +322 -0
  281. package/dist/lib/ops/core.js.map +1 -0
  282. package/dist/lib/ops/db.d.ts +116 -0
  283. package/dist/lib/ops/db.d.ts.map +1 -0
  284. package/dist/lib/ops/db.js +351 -0
  285. package/dist/lib/ops/db.js.map +1 -0
  286. package/dist/lib/ops/dns.d.ts +111 -0
  287. package/dist/lib/ops/dns.d.ts.map +1 -0
  288. package/dist/lib/ops/dns.js +306 -0
  289. package/dist/lib/ops/dns.js.map +1 -0
  290. package/dist/lib/ops/image.d.ts +94 -0
  291. package/dist/lib/ops/image.d.ts.map +1 -0
  292. package/dist/lib/ops/image.js +159 -0
  293. package/dist/lib/ops/image.js.map +1 -0
  294. package/dist/lib/ops/nginx.d.ts +114 -0
  295. package/dist/lib/ops/nginx.d.ts.map +1 -0
  296. package/dist/lib/ops/nginx.js +388 -0
  297. package/dist/lib/ops/nginx.js.map +1 -0
  298. package/dist/lib/ops/redis.d.ts +7 -0
  299. package/dist/lib/ops/redis.d.ts.map +1 -0
  300. package/dist/lib/ops/redis.js +35 -0
  301. package/dist/lib/ops/redis.js.map +1 -0
  302. package/dist/lib/ops/ssh.d.ts +127 -0
  303. package/dist/lib/ops/ssh.d.ts.map +1 -0
  304. package/dist/lib/ops/ssh.js +269 -0
  305. package/dist/lib/ops/ssh.js.map +1 -0
  306. package/dist/lib/prompts.d.ts +46 -0
  307. package/dist/lib/prompts.d.ts.map +1 -0
  308. package/dist/lib/prompts.js +113 -0
  309. package/dist/lib/prompts.js.map +1 -0
  310. package/dist/lib/sast.d.ts +43 -0
  311. package/dist/lib/sast.d.ts.map +1 -0
  312. package/dist/lib/sast.js +79 -0
  313. package/dist/lib/sast.js.map +1 -0
  314. package/dist/lib/sast.test.d.ts +2 -0
  315. package/dist/lib/sast.test.d.ts.map +1 -0
  316. package/dist/lib/sast.test.js +33 -0
  317. package/dist/lib/sast.test.js.map +1 -0
  318. package/dist/lib/shell.d.ts +61 -0
  319. package/dist/lib/shell.d.ts.map +1 -0
  320. package/dist/lib/shell.js +183 -0
  321. package/dist/lib/shell.js.map +1 -0
  322. package/dist/lib/ssh-config.d.ts +37 -0
  323. package/dist/lib/ssh-config.d.ts.map +1 -0
  324. package/dist/lib/ssh-config.js +122 -0
  325. package/dist/lib/ssh-config.js.map +1 -0
  326. package/dist/lib/tenant-scope.d.ts +38 -0
  327. package/dist/lib/tenant-scope.d.ts.map +1 -0
  328. package/dist/lib/tenant-scope.js +129 -0
  329. package/dist/lib/tenant-scope.js.map +1 -0
  330. package/dist/lib/tenant-scope.test.d.ts +2 -0
  331. package/dist/lib/tenant-scope.test.d.ts.map +1 -0
  332. package/dist/lib/tenant-scope.test.js +223 -0
  333. package/dist/lib/tenant-scope.test.js.map +1 -0
  334. package/package.json +58 -0
  335. package/templates/bootstrap/.env.template +54 -0
  336. package/templates/bootstrap/docker-compose.yml +145 -0
  337. package/templates/vhost.conf.tmpl +446 -0
@@ -0,0 +1,296 @@
1
+ /**
2
+ * CiCore CLI - Addon Management Commands
3
+ *
4
+ * Commands:
5
+ * vu addon:create <name> - Create a new addon
6
+ * vu addon:list [core] - List addons
7
+ * vu addon:build <name> - Build addon UI
8
+ * vu addon:install <name> <core> - Install addon to core
9
+ * vu addon:enable <name> <core> - Enable addon
10
+ * vu addon:disable <name> <core> - Disable addon
11
+ * vu addon:delete <name> <core> - Delete addon from core
12
+ * vu addon:migrate <name> <core> - Run addon migrations
13
+ * vu addon:sign <name> - Sign addon for marketplace
14
+ * vu addon:extract-classes [name] - Extract Tailwind classes from addon(s)
15
+ * vu addon:generate-safelist - Generate Tailwind safelist patterns
16
+ */
17
+ import { createAddon } from './create.js';
18
+ import { listAddons } from './list.js';
19
+ import { buildAddon } from './build.js';
20
+ import { installAddon } from './install.js';
21
+ import { deployAddon } from './deploy.js';
22
+ import { devAddon, stopAddon, listDevSessions, resetDevSessions } from './dev.js';
23
+ import { scaffoldQuality } from './scaffold-quality.js';
24
+ import { publishAddon } from './publish.js';
25
+ import { refreshManifest } from './manifest-refresh.js';
26
+ import { enableAddon, disableAddon } from './toggle.js';
27
+ import { deleteAddon } from './delete.js';
28
+ import { migrateAddon, rebuildAddon, resetAddon, uninstallAddon } from './migrate.js';
29
+ import { signAddon } from './sign.js';
30
+ import { addonApiAction, buildRegistry, dumpAutoload } from './api-actions.js';
31
+ import { extractClasses } from './extract-classes.js';
32
+ import { generateSafelist } from './generate-safelist.js';
33
+ import { initRepo } from './init-repo.js';
34
+ export function registerAddonCommands(program) {
35
+ const addon = program
36
+ .command('addon')
37
+ .description('Addon management commands');
38
+ // vu addon:create <name>
39
+ addon
40
+ .command('create <name>')
41
+ .description('HelloWorld şablonundan addon iskeleti oluşturur (vu addon create HesapMakinasi)')
42
+ .action(async (name) => {
43
+ await createAddon(name);
44
+ });
45
+ // ci addon init-repo <name> (S4-T23: GitLab repo oluştur + git push)
46
+ addon
47
+ .command('init-repo <name>')
48
+ .description('GitLab\'da repo oluşturur + git init + push (VPN gerekli, S4-T23)')
49
+ .option('--gitlab-url <url>', 'GitLab base URL', 'http://10.20.20.28')
50
+ .option('--group <group>', 'GitLab namespace/group', 'cicore-addons')
51
+ .option('--token <glpat>', 'GitLab personal access token (yoksa vault)')
52
+ .option('--dry-run', 'Gerçek işlem yapmadan simüle et')
53
+ .action(async (name, opts) => {
54
+ await initRepo(name, {
55
+ gitlabUrl: opts.gitlabUrl,
56
+ group: opts.group,
57
+ token: opts.token,
58
+ dryRun: opts.dryRun ?? false,
59
+ });
60
+ });
61
+ // vu addon:list [core]
62
+ addon
63
+ .command('list [core]')
64
+ .alias('ls')
65
+ .description('List addons (optionally for a specific core)')
66
+ .option('-j, --json', 'Output as JSON')
67
+ .option('-a, --all', 'Show all addons including disabled')
68
+ .action(async (core, options) => {
69
+ await listAddons(core, options);
70
+ });
71
+ // vu addon:build <name>
72
+ addon
73
+ .command('build <name>')
74
+ .description('Build addon UI (Vite ESM build)')
75
+ .option('-c, --core <core>', 'Target core', 'core1')
76
+ .option('--watch', 'Watch mode for development')
77
+ .option('--no-cdn', 'Skip CDN upload')
78
+ .action(async (name, options) => {
79
+ await buildAddon(name, options);
80
+ });
81
+ // ci addon:publish <name> — M3.4 merkezi marketplace yayını (option-b/K4)
82
+ addon
83
+ .command('publish <name>')
84
+ .description('Addon\'u merkezi marketplace\'e yayınla (build+sign+R2+publish_addon job, K-M3.4)')
85
+ .option('-c, --core <core>', 'Build target core', 'core1')
86
+ .option('--version <v>', 'Sürüm etiketi', 'latest')
87
+ .option('--host <alias>', 'Control-plane host', 'cicore')
88
+ .option('--title <t>', 'Görünen başlık (varsayılan: addon adı)')
89
+ .option('--plan <code>', 'Fiyat planı kodu (cp_plans.kind=addon); boş=ücretsiz')
90
+ .option('--public', 'Storefront kataloğunda listele (is_public)')
91
+ .option('--skip-build', 'Build adımını atla (mevcut dist kullan)')
92
+ .option('--skip-scan', 'SAST (Semgrep) pre-flight gate\'ini atla (fail-closed bypass, audit\'li)')
93
+ .option('--skip-enqueue', 'publish_addon job enqueue\'unu atla (sadece R2 upload)')
94
+ .option('--semgrep-config <cfg>', 'Semgrep ruleset (varsayılan: auto / CICORE_SEMGREP_CONFIG)')
95
+ .action(async (name, options) => {
96
+ await publishAddon(name, options);
97
+ });
98
+ // ci addon manifest-refresh — FLIP-1 Worker-side: enforcement_mode flip → imzalı manifest regen → R2
99
+ addon
100
+ .command('manifest-refresh')
101
+ .description('enforcement_mode flip\'ini Worker\'a yansıt: imzalı manifest\'i regen et + R2\'ye yükle (addon publish\'siz)')
102
+ .option('--host <alias>', 'Control-plane host', 'cicore')
103
+ .action(async (options) => {
104
+ await refreshManifest(options);
105
+ });
106
+ // vu addon:install <name> <core>
107
+ addon
108
+ .command('install <name> <core>')
109
+ .description('Install addon backend to a core on the given host')
110
+ .option('-f, --force', 'Overwrite existing addon')
111
+ .option('--no-build', 'Skip UI build (legacy, no-op — UI runs via `vu addon build`)')
112
+ .option('-h, --host <host>', 'Host alias (vucore | cicore)')
113
+ .action(async (name, core, options) => {
114
+ await installAddon(name, core, options);
115
+ });
116
+ // ci addon:deploy — personnel-friendly: cwd-based, host implicit cicore
117
+ addon
118
+ .command('deploy')
119
+ .description('Personel deploy: cwd\'deki addon\'u cicore staging\'in seçilen tenant\'ına yükle')
120
+ .option('-c, --core <core>', 'Hedef tenant: cicore | vucore (zorunlu)')
121
+ .option('-p, --path <path>', 'Addon dizini (default: cwd)')
122
+ .option('-f, --force', 'Production onayını atla (--force kaydı tutulur)')
123
+ // NOTE: --dry-run is registered globally on the top-level program
124
+ // (src/index.ts) so commander hoists it; this subcommand reads it
125
+ // via isDryRun() from lib/config. Listing it here would be a no-op.
126
+ .option('--no-quality', 'Pre-deploy quality gate (vue-tsc/eslint/php -l/schema) bypass (kayıt tutulur, sadece acil durum)')
127
+ .action(async (options) => {
128
+ await deployAddon(options);
129
+ });
130
+ // ci addon:dev-deploy was a Mustafa-only command (required the cicore
131
+ // monorepo, which personnel never has). Faz 2 made it redundant —
132
+ // `ci addon dev` covers fast dev iteration, `ci addon deploy` covers
133
+ // production. Removed from the registered commands here; the source
134
+ // (./dev-deploy.ts) stays for backwards-compat with any local script
135
+ // that imports it directly. If still unused after the pilot phase,
136
+ // delete the file entirely (tracked in plan FUTURE).
137
+ // ci addon:dev <name> — start a vite dev session for the addon (Faz 2A)
138
+ // Foreground vite + atomic override map + nginx snippet management.
139
+ // `--list` and `--reset` operate on the cores/dev/.dev-addon-overrides.json
140
+ // session registry. Run from anywhere inside dev-shell.
141
+ addon
142
+ .command('dev [name]')
143
+ .description('Addon HMR dev session: vite + nginx + override map atomically')
144
+ .option('--shell-path <path>', 'dev-shell dizini (default: auto-detect from cwd)')
145
+ .option('-p, --port <port>', 'vite port override (default: auto from 5173-5273 pool)')
146
+ .option('--list', 'List active dev sessions and exit')
147
+ .option('--reset', 'Stop all active sessions and clear state (use when sessions are stale)')
148
+ .action(async (name, options) => {
149
+ if (options.list) {
150
+ await listDevSessions(options);
151
+ return;
152
+ }
153
+ if (options.reset) {
154
+ await resetDevSessions(options);
155
+ return;
156
+ }
157
+ if (!name) {
158
+ console.error('Addon name required. Usage: ci addon dev <Name> | --list | --reset');
159
+ process.exit(1);
160
+ }
161
+ await devAddon(name, options);
162
+ });
163
+ // ci addon:stop <name> — stop a running dev session from a different terminal
164
+ addon
165
+ .command('stop <name>')
166
+ .description('Stop an active addon dev session (graceful SIGTERM + cleanup)')
167
+ .option('--shell-path <path>', 'dev-shell dizini (default: auto-detect from cwd)')
168
+ .action(async (name, options) => {
169
+ await stopAddon(name, options);
170
+ });
171
+ // ci addon:scaffold-quality — apply Faz 5 quality template to existing addon(s)
172
+ addon
173
+ .command('scaffold-quality')
174
+ .description('Mevcut addon\'a Faz 5 quality template (eslint/prettier/tsconfig/env.d.ts/CI) ekle')
175
+ .option('-p, --path <path>', 'Addon dizini (default: cwd)')
176
+ .option('--all', 'dev-shell\'deki tüm addonlara sırayla uygula')
177
+ .option('--overwrite', 'Mevcut config dosyalarını da üzerine yaz')
178
+ .action(async (options) => {
179
+ await scaffoldQuality(options);
180
+ });
181
+ // vu addon:enable <name> <core>
182
+ addon
183
+ .command('enable <name> <core>')
184
+ .description('Enable addon in a core')
185
+ .action(async (name, core) => {
186
+ await enableAddon(name, core);
187
+ });
188
+ // vu addon:disable <name> <core>
189
+ addon
190
+ .command('disable <name> <core>')
191
+ .description('Disable addon in a core')
192
+ .action(async (name, core) => {
193
+ await disableAddon(name, core);
194
+ });
195
+ // vu addon:delete <name> <core>
196
+ addon
197
+ .command('delete <name> <core>')
198
+ .alias('rm')
199
+ .description('Delete addon from a core on server')
200
+ .option('-f, --force', 'Skip confirmation')
201
+ .option('-h, --host <host>', 'SSH host for server')
202
+ .action(async (name, core, options) => {
203
+ await deleteAddon(name, core, options);
204
+ });
205
+ // vu addon:migrate <name> <core>
206
+ addon
207
+ .command('migrate <name> <core>')
208
+ .description('Run addon database migrations')
209
+ .option('--rollback', 'Rollback last migration')
210
+ .option('--fresh', 'Drop all tables and re-run migrations')
211
+ .action(async (name, core, options) => {
212
+ await migrateAddon(name, core, options);
213
+ });
214
+ // vu addon:sign <name>
215
+ addon
216
+ .command('sign <name>')
217
+ .description('Generate addon signature for marketplace')
218
+ .option('-k, --key <key>', 'Signing key')
219
+ .action(async (name, options) => {
220
+ await signAddon(name, options);
221
+ });
222
+ // vu addon:rebuild <name> <core>
223
+ addon
224
+ .command('rebuild <name> <core>')
225
+ .description('Rebuild addon (drop tables + re-run migrations)')
226
+ .option('-h, --host <host>', 'SSH host for remote server')
227
+ .action(async (name, core, options) => {
228
+ await rebuildAddon(name, core, options);
229
+ });
230
+ // vu addon:reset <name> <core>
231
+ addon
232
+ .command('reset <name> <core>')
233
+ .description('Reset addon (drop all tables and re-create)')
234
+ .option('-h, --host <host>', 'SSH host for remote server')
235
+ .option('-f, --force', 'Skip confirmation')
236
+ .action(async (name, core, options) => {
237
+ await resetAddon(name, core, options);
238
+ });
239
+ // vu addon:uninstall <name> <core>
240
+ addon
241
+ .command('uninstall <name> <core>')
242
+ .description('Uninstall addon (remove database tables)')
243
+ .option('-h, --host <host>', 'SSH host for remote server')
244
+ .option('-f, --force', 'Skip confirmation')
245
+ .action(async (name, core, options) => {
246
+ await uninstallAddon(name, core, options);
247
+ });
248
+ // vu addon:api <action> <name>
249
+ addon
250
+ .command('api <action> <name>')
251
+ .description('Run addon API action (migrate, build, rebuild, reset)')
252
+ .option('-h, --host <host>', 'SSH host for remote server')
253
+ .option('-c, --core <core>', 'Core name', 'core1')
254
+ .option('-d, --domain <domain>', 'API domain (for remote calls)')
255
+ .action(async (action, name, options) => {
256
+ await addonApiAction(action, name, options);
257
+ });
258
+ // vu addon:registry
259
+ addon
260
+ .command('registry')
261
+ .description('Build addon registry from filesystem')
262
+ .option('-h, --host <host>', 'SSH host for remote server')
263
+ .option('-d, --domain <domain>', 'API domain')
264
+ .action(async (options) => {
265
+ await buildRegistry(options);
266
+ });
267
+ // vu addon:autoload
268
+ addon
269
+ .command('autoload')
270
+ .description('Run composer dump-autoload')
271
+ .option('-h, --host <host>', 'SSH host for remote server')
272
+ .action(async (options) => {
273
+ await dumpAutoload(options);
274
+ });
275
+ // vu addon:extract-classes [name]
276
+ // Part of Automated Safelist Pipeline (TIER 1)
277
+ addon
278
+ .command('extract-classes [name]')
279
+ .description('Extract Tailwind CSS classes from addon Vue files')
280
+ .option('-o, --output <path>', 'Output JSON file path')
281
+ .option('-v, --verbose', 'Show detailed file-by-file output')
282
+ .action(async (name, options) => {
283
+ await extractClasses(name, options);
284
+ });
285
+ // vu addon:generate-safelist
286
+ // Part of Automated Safelist Pipeline (TIER 1)
287
+ addon
288
+ .command('generate-safelist')
289
+ .description('Generate Tailwind safelist patterns from extracted classes')
290
+ .option('-i, --input <path>', 'Input JSON file from extract-classes')
291
+ .option('-o, --output <path>', 'Output JS file path')
292
+ .action(async (options) => {
293
+ await generateSafelist(options);
294
+ });
295
+ }
296
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/addon/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ci addon init-repo <Name>
3
+ *
4
+ * S4-T23: Lokal scaffold sonrası GitLab repo oluşturur ve ilk push'u yapar.
5
+ *
6
+ * Yapılanlar:
7
+ * 1. GitLab'da `cicore-addons/<addon-kebab>` namespace'inde proje oluştur (API)
8
+ * 2. Lokal addon dizininde git init + initial commit
9
+ * 3. Remote ekle + push
10
+ *
11
+ * Gereksinimler:
12
+ * - VPN bağlantısı (10.20.20.28 erişilebilir)
13
+ * - GITLAB_TOKEN env veya vault: ci kasa get gitlab addons-token
14
+ *
15
+ * Kullanım:
16
+ * ci addon init-repo HesapMakinasi [--gitlab-url http://10.20.20.28] [--group cicore-addons]
17
+ */
18
+ export interface InitRepoOptions {
19
+ readonly gitlabUrl?: string;
20
+ readonly group?: string;
21
+ readonly token?: string;
22
+ readonly dryRun?: boolean;
23
+ }
24
+ export declare function initRepo(name: string, options: InitRepoOptions): Promise<void>;
25
+ //# sourceMappingURL=init-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-repo.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/init-repo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAYD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IpF"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * ci addon init-repo <Name>
3
+ *
4
+ * S4-T23: Lokal scaffold sonrası GitLab repo oluşturur ve ilk push'u yapar.
5
+ *
6
+ * Yapılanlar:
7
+ * 1. GitLab'da `cicore-addons/<addon-kebab>` namespace'inde proje oluştur (API)
8
+ * 2. Lokal addon dizininde git init + initial commit
9
+ * 3. Remote ekle + push
10
+ *
11
+ * Gereksinimler:
12
+ * - VPN bağlantısı (10.20.20.28 erişilebilir)
13
+ * - GITLAB_TOKEN env veya vault: ci kasa get gitlab addons-token
14
+ *
15
+ * Kullanım:
16
+ * ci addon init-repo HesapMakinasi [--gitlab-url http://10.20.20.28] [--group cicore-addons]
17
+ */
18
+ import { execSync } from 'node:child_process';
19
+ import path from 'node:path';
20
+ import fs from 'fs-extra';
21
+ import { log, spinner } from '../../lib/logger.js';
22
+ import { findShellRoot } from '../../lib/ops/addon-dev.js';
23
+ import { paths } from '../../lib/config.js';
24
+ const DEFAULT_GITLAB_URL = 'http://10.20.20.28';
25
+ const DEFAULT_GROUP = 'cicore-addons';
26
+ function toKebab(name) {
27
+ return name
28
+ .replace(/([A-Z])/g, '-$1')
29
+ .toLowerCase()
30
+ .replace(/^-/, '');
31
+ }
32
+ export async function initRepo(name, options) {
33
+ log.title(`GitLab Repo Oluştur: ${name}`);
34
+ if (!/^[A-Z][a-zA-Z0-9]+$/.test(name)) {
35
+ log.error('Addon adı PascalCase olmalı. Örnek: HesapMakinasi');
36
+ process.exit(1);
37
+ }
38
+ const gitlabUrl = options.gitlabUrl ?? DEFAULT_GITLAB_URL;
39
+ const group = options.group ?? DEFAULT_GROUP;
40
+ const slug = toKebab(name);
41
+ const repoName = `addon-${slug}`;
42
+ // Token: --token flag > GITLAB_TOKEN env > vault
43
+ let token = options.token ?? process.env.GITLAB_TOKEN ?? '';
44
+ if (!token) {
45
+ try {
46
+ token = execSync(`bash "${path.resolve(process.cwd(), '../../../../.team/vault.sh')}" get gitlab addons-token 2>/dev/null`, { encoding: 'utf8' }).trim();
47
+ }
48
+ catch {
49
+ // vault erişimi yoksa devam et — sonra hata verir
50
+ }
51
+ }
52
+ if (!token) {
53
+ log.error('GitLab token bulunamadı. --token <glpat-...> ver veya GITLAB_TOKEN env ayarla.');
54
+ log.info('Vault: ci kasa get gitlab addons-token');
55
+ process.exit(1);
56
+ }
57
+ // Addon dizini bul
58
+ const shellRoot = findShellRoot(process.cwd());
59
+ const addonsRoot = shellRoot ? path.join(shellRoot, 'cores', 'dev', 'addons') : paths.dev.addons;
60
+ const addonPath = path.join(addonsRoot, name);
61
+ if (!(await fs.pathExists(path.join(addonPath, 'addon.json')))) {
62
+ log.error(`Addon bulunamadı: ${addonPath}`);
63
+ log.info(`Önce: ci addon create ${name}`);
64
+ process.exit(1);
65
+ }
66
+ // 1. GitLab namespace ID bul
67
+ const s = spinner(`${gitlabUrl}/${group} namespace ID alınıyor...`).start();
68
+ let namespaceId;
69
+ try {
70
+ const nsRes = await fetch(`${gitlabUrl}/api/v4/namespaces?search=${encodeURIComponent(group)}&per_page=5`, { headers: { 'PRIVATE-TOKEN': token } });
71
+ if (!nsRes.ok)
72
+ throw new Error(`HTTP ${nsRes.status}: ${await nsRes.text()}`);
73
+ const nsData = (await nsRes.json());
74
+ const ns = nsData.find(n => n.full_path === group);
75
+ if (!ns)
76
+ throw new Error(`Grup "${group}" bulunamadı. Önce GitLab'da oluştur.`);
77
+ namespaceId = ns.id;
78
+ s.succeed(`Namespace: ${group} (id=${namespaceId})`);
79
+ }
80
+ catch (err) {
81
+ s.fail(`Namespace alınamadı: ${err.message}`);
82
+ log.info('VPN bağlı mı? 10.20.20.28 erişilebilir mi?');
83
+ process.exit(1);
84
+ }
85
+ // 2. GitLab'da proje oluştur
86
+ const s2 = spinner(`${group}/${repoName} projesi oluşturuluyor...`).start();
87
+ let cloneUrl;
88
+ try {
89
+ if (options.dryRun) {
90
+ s2.succeed(`[dry-run] Proje oluşturulacaktı: ${group}/${repoName}`);
91
+ cloneUrl = `${gitlabUrl}/${group}/${repoName}.git`;
92
+ }
93
+ else {
94
+ const createRes = await fetch(`${gitlabUrl}/api/v4/projects`, {
95
+ method: 'POST',
96
+ headers: { 'PRIVATE-TOKEN': token, 'Content-Type': 'application/json' },
97
+ body: JSON.stringify({
98
+ name: repoName,
99
+ path: repoName,
100
+ namespace_id: namespaceId,
101
+ description: `${name} addon for ciCore platform`,
102
+ visibility: 'private',
103
+ initialize_with_readme: false,
104
+ }),
105
+ });
106
+ if (!createRes.ok) {
107
+ const body = await createRes.text();
108
+ if (createRes.status === 400 && body.includes('already been taken')) {
109
+ s2.warn(`Proje zaten var: ${group}/${repoName} — remote eklemeye devam`);
110
+ cloneUrl = `${gitlabUrl}/${group}/${repoName}.git`;
111
+ }
112
+ else {
113
+ throw new Error(`HTTP ${createRes.status}: ${body}`);
114
+ }
115
+ }
116
+ else {
117
+ const proj = (await createRes.json());
118
+ cloneUrl = proj.http_url_to_repo;
119
+ s2.succeed(`Proje oluşturuldu: ${cloneUrl}`);
120
+ }
121
+ }
122
+ }
123
+ catch (err) {
124
+ s2.fail(`Proje oluşturulamadı: ${err.message}`);
125
+ process.exit(1);
126
+ }
127
+ // 3. git init + remote + initial commit + push
128
+ const s3 = spinner('git init + commit + push...').start();
129
+ try {
130
+ const run = (cmd) => execSync(cmd, { cwd: addonPath, stdio: 'pipe', encoding: 'utf8' });
131
+ // git init (idempotent)
132
+ run('git init -b main');
133
+ run('git add .');
134
+ try {
135
+ run('git commit -m "init: scaffold oluşturuldu (ci addon create)"');
136
+ }
137
+ catch { /* zaten commit varsa */ }
138
+ // remote ekle veya güncelle
139
+ try {
140
+ run('git remote add origin ' + cloneUrl);
141
+ }
142
+ catch {
143
+ run('git remote set-url origin ' + cloneUrl);
144
+ }
145
+ if (!options.dryRun) {
146
+ // token'ı URL'e göm — tek-seferlik push (-u YOK: authUrl .git/config'e plaintext sızmaz)
147
+ const authUrl = cloneUrl.replace('http://', `http://oauth2:${token}@`);
148
+ run(`git push ${authUrl} main`);
149
+ // upstream'i token-suz origin üzerinden ayarla
150
+ run(`git branch --set-upstream-to=origin/main main`);
151
+ s3.succeed(`Push: ${cloneUrl}`);
152
+ }
153
+ else {
154
+ s3.succeed(`[dry-run] git push atlanırdı → ${cloneUrl}`);
155
+ }
156
+ }
157
+ catch (err) {
158
+ s3.fail(`git push başarısız: ${err.message}`);
159
+ process.exit(1);
160
+ }
161
+ log.blank();
162
+ log.success(`${name} GitLab'a yüklendi!`);
163
+ log.kv('Repo', `${gitlabUrl}/${group}/${repoName}`);
164
+ log.kv('Clone', cloneUrl);
165
+ log.blank();
166
+ log.info('Sonraki adımlar:');
167
+ log.item(`ci addon dev ${name} — lokal vite HMR`);
168
+ log.item(`ci addon deploy --core cicore — staging deploy`);
169
+ log.item(`CI/CD Variables → ${gitlabUrl}/${group}/${repoName}/-/settings/ci_cd`);
170
+ }
171
+ //# sourceMappingURL=init-repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-repo.js","sourceRoot":"","sources":["../../../src/commands/addon/init-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * vu addon install <name> <core> [--host <h>] — host-aware addon backend install
3
+ *
4
+ * Packages the local addon directory and ships it to the chosen host's
5
+ * deploy receiver, where `install-addon.sh` (forced-command wrapper)
6
+ * extracts it into `<coresHostPath>/<core>/addons/<name>/`, fixes
7
+ * permissions, and restarts PHP and Nuxt.
8
+ *
9
+ * The legacy build step (`build-addon-esm-master.sh` on vucore prod) is no
10
+ * longer invoked here — addon UI builds run locally via `vu addon build`
11
+ * before install, with the produced bundle uploaded to the CDN. This file
12
+ * is purely "deliver the backend zip to the server"; the UI deploy lives
13
+ * in `commands/build/addon` (refactored in step 3).
14
+ */
15
+ export interface InstallOptions {
16
+ readonly force?: boolean;
17
+ /** When false, skip the local backend repackage and assume an already-staged install. */
18
+ readonly build?: boolean;
19
+ /** Host alias (vucore | cicore). Required — no implicit default. */
20
+ readonly host?: string;
21
+ }
22
+ export declare function installAddon(name: string, core: string, options: InstallOptions): Promise<void>;
23
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAeH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,yFAAyF;IACzF,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAiEf"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * vu addon install <name> <core> [--host <h>] — host-aware addon backend install
3
+ *
4
+ * Packages the local addon directory and ships it to the chosen host's
5
+ * deploy receiver, where `install-addon.sh` (forced-command wrapper)
6
+ * extracts it into `<coresHostPath>/<core>/addons/<name>/`, fixes
7
+ * permissions, and restarts PHP and Nuxt.
8
+ *
9
+ * The legacy build step (`build-addon-esm-master.sh` on vucore prod) is no
10
+ * longer invoked here — addon UI builds run locally via `vu addon build`
11
+ * before install, with the produced bundle uploaded to the CDN. This file
12
+ * is purely "deliver the backend zip to the server"; the UI deploy lives
13
+ * in `commands/build/addon` (refactored in step 3).
14
+ */
15
+ import path from 'path';
16
+ import fs from 'fs-extra';
17
+ import { log, spinner } from '../../lib/logger.js';
18
+ import { paths } from '../../lib/config.js';
19
+ import { confirm } from '../../lib/prompts.js';
20
+ import { getHostConfig } from '../../lib/hosts.js';
21
+ import { addonPackageBackend, addonInstallBackend, addonCleanupPackage, } from '../../lib/ops/addon.js';
22
+ import { runRemote } from '../../lib/ops/ssh.js';
23
+ export async function installAddon(name, core, options) {
24
+ log.title(`Install Addon: ${name} → ${core}`);
25
+ if (options.host === undefined) {
26
+ log.error('--host is required (vucore | cicore). Pass --host <alias>.');
27
+ return;
28
+ }
29
+ const cfg = getHostConfig(options.host);
30
+ log.info(`Target: ${cfg.brandName}`);
31
+ const localPath = path.join(paths.dev.addons, name);
32
+ const remotePath = `${cfg.coresHostPath}/${core}/addons/${name}`;
33
+ // Sanity: local addon must exist before we package.
34
+ if (!(await fs.pathExists(localPath))) {
35
+ log.error(`Addon "${name}" not found locally at ${localPath}`);
36
+ return;
37
+ }
38
+ // Idempotency check: if the addon already exists on the server, ask for
39
+ // overwrite confirmation unless --force. The deploy receiver does its
40
+ // own backup-on-overwrite, but a wrong-name install would clobber a
41
+ // good addon — better to surface the conflict here.
42
+ const check = await runRemote(cfg, `test -d ${shellQuote(remotePath)} && echo exists`, {
43
+ silent: true,
44
+ });
45
+ const alreadyInstalled = check.stdout.includes('exists');
46
+ if (alreadyInstalled && options.force !== true) {
47
+ const overwrite = await confirm(`Addon "${name}" already exists in ${core}. Overwrite (existing backed up)?`, false);
48
+ if (!overwrite) {
49
+ log.warn('Cancelled');
50
+ return;
51
+ }
52
+ }
53
+ // Package + ship.
54
+ const packSpinner = spinner('Packaging addon backend ...').start();
55
+ let pack;
56
+ try {
57
+ pack = await addonPackageBackend(name, localPath);
58
+ }
59
+ catch (err) {
60
+ packSpinner.fail('Packaging failed');
61
+ log.error(err instanceof Error ? err.message : String(err));
62
+ return;
63
+ }
64
+ packSpinner.succeed(`Packaged: ${(pack.sizeBytes / 1024).toFixed(1)} KiB`);
65
+ try {
66
+ const installSpinner = spinner('Installing on server ...').start();
67
+ const result = await addonInstallBackend(cfg, pack.zipPath, name, core);
68
+ if (!result.success) {
69
+ installSpinner.fail('Server install failed');
70
+ log.error(result.stderr || result.stdout);
71
+ return;
72
+ }
73
+ installSpinner.succeed('Server install complete');
74
+ }
75
+ finally {
76
+ await addonCleanupPackage(pack.zipPath);
77
+ }
78
+ log.blank();
79
+ log.success(`Addon "${name}" installed to ${core} on ${cfg.brandName}`);
80
+ }
81
+ function shellQuote(s) {
82
+ return `'${s.replace(/'/g, `'\\''`)}'`;
83
+ }
84
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/addon/install.ts"],"names":[],"mappings":"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"}