@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 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAe5B,wBAAwB;AACxB,MAAM,QAAQ,GAAc;IAC1B,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,MAAM;IACf,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,+BAA+B;IAC1C,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAY;IACxC,WAAW,EAAE,YAAY;IACzB,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEvD,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,KAA8C;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnE,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,4BAA4B;IAC5B,GAAG,EAAE;QACH,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QACrC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;QAC9C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QACrC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;KACxC;IAED,sBAAsB;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,eAAe,QAAQ,SAAS;QAC9D,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,eAAe,QAAQ,SAAS;QAC9D,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,eAAe,QAAQ,UAAU;KACjE;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,wBAAwB;IAClC,KAAK,EAAE,qBAAqB;IAE5B,iBAAiB;IACjB,GAAG,EAAE;QACH,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,KAAK,EAAE,kBAAkB;KAC1B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,wBAAwB;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,sBAAsB;QAC5B,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,uBAAuB;QACjC,KAAK,EAAE,kBAAkB;KAC1B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC,OAAO,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAW,CAAC;AAChD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface DotEnvResult {
2
+ readonly loaded: boolean;
3
+ readonly path?: string;
4
+ readonly count?: number;
5
+ }
6
+ /** .env'i process.env'e yükle (idempotent; shell-set vars korunur). */
7
+ export declare function loadDotEnv(): DotEnvResult;
8
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,uEAAuE;AACvE,wBAAgB,UAAU,IAAI,YAAY,CAuCzC"}
@@ -0,0 +1,64 @@
1
+ // ─────────────────────────────────────────────────────────────────────────
2
+ // .env auto-load — CLI bootstrap (zero-dependency).
3
+ // Plan: docs/planning/2026-06-02-cli-dotenv-autoload.md
4
+ //
5
+ // Eskiden her `ci`/script çağrısı öncesi elle `set -a; source .env; set +a`
6
+ // gerekiyordu (CLAUDE.md FUTURE). Bu loader CLI başlarken .env'i process.env'e
7
+ // yükler. Davranış `set -a; source .env` ile uyumlu AMA güvenli:
8
+ // - Shell'de zaten set olan değişken KAZANIR (override YOK).
9
+ // - Arama: CICORE_ENV_FILE override → cwd/.env → cwd'den yukarı walk (max 6).
10
+ // - Secret GÜVENLİĞİ: değerler ASLA loglanmaz; yalnız dosya yolu döner.
11
+ // - Yeni paket bağımlılığı YOK (personel kurulumlarını etkilemez).
12
+ // ─────────────────────────────────────────────────────────────────────────
13
+ import { existsSync, readFileSync } from 'node:fs';
14
+ import { dirname, join } from 'node:path';
15
+ /** .env'i process.env'e yükle (idempotent; shell-set vars korunur). */
16
+ export function loadDotEnv() {
17
+ const candidates = [];
18
+ if (process.env.CICORE_ENV_FILE)
19
+ candidates.push(process.env.CICORE_ENV_FILE);
20
+ let dir = process.cwd();
21
+ for (let i = 0; i < 6; i++) {
22
+ candidates.push(join(dir, '.env'));
23
+ const parent = dirname(dir);
24
+ if (parent === dir)
25
+ break;
26
+ dir = parent;
27
+ }
28
+ for (const p of candidates) {
29
+ if (!p || !existsSync(p))
30
+ continue;
31
+ let count = 0;
32
+ try {
33
+ const text = readFileSync(p, 'utf8');
34
+ for (const raw of text.split('\n')) {
35
+ const line = raw.trim();
36
+ if (line === '' || line.startsWith('#'))
37
+ continue;
38
+ const eq = line.indexOf('='); // ilk '='; değerdeki '=' (base64 vb.) korunur
39
+ if (eq <= 0)
40
+ continue;
41
+ let key = line.slice(0, eq).trim();
42
+ if (key.startsWith('export '))
43
+ key = key.slice(7).trim();
44
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
45
+ continue;
46
+ if (key in process.env)
47
+ continue; // shell KAZANIR — override etme
48
+ let val = line.slice(eq + 1).trim();
49
+ if (val.length >= 2 &&
50
+ ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'")))) {
51
+ val = val.slice(1, -1);
52
+ }
53
+ process.env[key] = val;
54
+ count++;
55
+ }
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ return { loaded: true, path: p, count };
61
+ }
62
+ return { loaded: false };
63
+ }
64
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oDAAoD;AACpD,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,iEAAiE;AACjE,+DAA+D;AAC/D,gFAAgF;AAChF,0EAA0E;AAC1E,qEAAqE;AACrE,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAQzC,uEAAuE;AACvE,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC7E,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAK;QACzB,GAAG,GAAG,MAAM,CAAA;IACd,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAQ;QAClC,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;gBACvB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAQ;gBACjD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,CAAU,8CAA8C;gBACpF,IAAI,EAAE,IAAI,CAAC;oBAAE,SAAQ;gBACrB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBAClC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBACxD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,SAAQ;gBACnD,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG;oBAAE,SAAQ,CAAO,gCAAgC;gBACvE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBACnC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;oBACf,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/F,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACxB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;gBACtB,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * CiCore CLI — Per-host deployment topology
3
+ *
4
+ * Single source of truth for host-specific configuration. Static topology
5
+ * (registry namespace, container names, file paths, compose layout) is
6
+ * declared here at module load; secrets (API keys, DB password, CF token)
7
+ * are read lazily from `.env` via `getHostConfig()` only when actually
8
+ * needed by a command — so `vu --help` works without any env vars set.
9
+ *
10
+ * Onboarding a new platform = one entry in `STATIC_TOPOLOGY` plus the
11
+ * matching env vars in `.env`. No code changes elsewhere in `cli/`.
12
+ *
13
+ * Two hosts initially supported:
14
+ *
15
+ * - `vucore` — production (5.178.111.115). Prod-style 5-file compose
16
+ * under `/home/services/`. Images: `baynis/vucore-*`.
17
+ * CDN: `cdn.cicore.com.tr` (Worker fronting R2 bucket).
18
+ *
19
+ * - `cicore` — staging (10.20.20.11). Single-file compose under
20
+ * `/home/fmcicore/vucore/`. Images: `cisofttr/cicore-*`
21
+ * (private). CDN: `cdn.cicore.com.tr`. Nginx vhost proxies
22
+ * `/_nuxt/` directly to Nuxt — addons still go through CDN.
23
+ */
24
+ /** Supported host aliases. Adding a host = extend this union + STATIC_TOPOLOGY. */
25
+ export type HostAlias = 'cicore' | 'mkt';
26
+ /** Docker compose services the CLI knows how to address. */
27
+ export type ServiceKey = 'nuxt' | 'php' | 'nginx' | 'postgres' | 'redis';
28
+ /** Subset of services that have their own compose file in split layout. */
29
+ export type AppServiceKey = Extract<ServiceKey, 'nuxt' | 'php' | 'nginx'>;
30
+ /**
31
+ * Static per-host configuration. Pure data — no secrets, no env reads.
32
+ * Secrets are layered on top by `getHostConfig()` at call time.
33
+ */
34
+ interface HostTopologyStatic {
35
+ readonly alias: HostAlias;
36
+ /** Human-readable label, used in log output only. */
37
+ readonly brandName: string;
38
+ /**
39
+ * Default SSH user for general operations (mkdir, file writes, docker
40
+ * exec, psql, nginx edits, etc.). Must have sudo (NOPASSWD where needed)
41
+ * on the target host. This is the user that owns the deploy work; the
42
+ * forced-command receiver below is a separate, narrower account.
43
+ */
44
+ readonly sshUser: string;
45
+ /**
46
+ * SSH hostname or IP — passed directly to ssh as the target. Use the VPN
47
+ * address rather than the SSH config alias so the CLI works regardless
48
+ * of the developer's local SSH config and so the connection doesn't
49
+ * depend on public-IP routing that might not be set up yet.
50
+ */
51
+ readonly sshHostname: string;
52
+ /** Identity file path (tilde-expanded by ops/ssh.ts before exec). */
53
+ readonly sshKeyPath: string;
54
+ /**
55
+ * Receiver account that owns the forced-command wrapper (ssh-wrapper.sh
56
+ * → install-addon.sh / install-core.sh). Used ONLY by addon/core install
57
+ * primitives; all other ops use `sshUser`. When undefined, the host
58
+ * doesn't have a deploy receiver set up and install-* commands need to
59
+ * use the legacy direct-SSH path.
60
+ */
61
+ readonly deployUser?: string;
62
+ /** Docker Hub namespace for `docker push` — e.g. `baynis`, `cisofttr`. */
63
+ readonly registry: string;
64
+ /** Image name prefix within the push namespace (e.g. `vucore`, `cicore`). */
65
+ readonly imagePrefix: string;
66
+ /**
67
+ * Image base name referenced by the on-server `docker-compose.yml`.
68
+ *
69
+ * Cicore staging pulls from `cisofttr/cicore-*` then retags locally to
70
+ * `baynis/vucore-*:latest` so the unmodified compose file (which hardcodes
71
+ * baynis/vucore-*) keeps working. Vucore prod uses `baynis/vucore-*`
72
+ * directly with no retag.
73
+ *
74
+ * Format: `<namespace>/<prefix>` — the per-service suffix and tag are
75
+ * appended by callers (e.g. `${composeImageName}-nuxt:latest`).
76
+ */
77
+ readonly composeImageName: string;
78
+ /** Worker endpoint for upload/clean — e.g. `https://cdn-api.cicore.com.tr`. */
79
+ readonly cdnEndpoint: string;
80
+ /** Public CDN base URL — embedded in addon ui-manifest.json. */
81
+ readonly cdnBaseUrl: string;
82
+ /** Relative path (from repo root) to the Wrangler project directory. */
83
+ readonly cdnGatewayDir: string;
84
+ /**
85
+ * When true, the on-server nginx vhost serves `/_nuxt/` directly from the
86
+ * Nuxt container instead of via CDN. The setup/deploy flow then skips
87
+ * CoreUI R2 upload entirely. Addon UIs are always served from the CDN
88
+ * regardless of this flag.
89
+ */
90
+ readonly cdnBypassForNuxt: boolean;
91
+ /** Directory on the server where `docker compose` is invoked. */
92
+ readonly workDir: string;
93
+ /**
94
+ * Host path that bind-mounts to `/var/www/cores` in the PHP container.
95
+ * Per-core directories (`<coresHostPath>/<core>/{addons,storage,…}`) live
96
+ * here. Setup creates this directory tree per new core.
97
+ */
98
+ readonly coresHostPath: string;
99
+ /**
100
+ * When true, all services live in one `docker-compose.yml` (cicore layout).
101
+ * When false, each service has its own compose file (vucore prod split).
102
+ * Determines whether `docker compose ... up <service>` needs a positional
103
+ * service argument — see `composeArgs()`.
104
+ */
105
+ readonly singleCompose: boolean;
106
+ /** Per-service compose filenames (relative to `workDir`). */
107
+ readonly composeFiles: Readonly<Record<AppServiceKey, string>>;
108
+ /** Per-service container names (`docker restart …` targets). */
109
+ readonly containerNames: Readonly<Record<ServiceKey, string>>;
110
+ /**
111
+ * Absolute path on the server to the directory holding nginx vhost
112
+ * configs and the global router file. `vu server domain` / `setup`
113
+ * edit `vucore-global-router.conf` placeholders here, then trigger
114
+ * `nginx -s reload` inside the nginx container (which bind-mounts
115
+ * this directory as `/etc/nginx/conf.d`).
116
+ */
117
+ readonly nginxConfigDir: string;
118
+ /**
119
+ * UID:GID the PHP-FPM (and Nuxt) container runs as. Core files written by
120
+ * the CLI over SSH are owned by `sshUser`; when that differs from the
121
+ * runtime UID (e.g. root-sshUser hosts), the container can't read the
122
+ * per-core `.env` (mode 600) → DB creds fall back to defaults and install
123
+ * fails. The CLI chowns core files to this UID after writing so ownership
124
+ * is decoupled from the SSH login. cisofttr images run as uid 1000.
125
+ * (Bug surfaced 2026-05-24 on the root-sshUser `mkt` host.)
126
+ */
127
+ readonly phpRuntimeUid: number;
128
+ /**
129
+ * Default SSL certificate basename (no `.crt`/`.key` suffix) in
130
+ * `/etc/nginx/ssl/`. Used by `nginxWriteVhost` when the operator does
131
+ * not pass an explicit `--ssl-cert-name`. Behind a Cloudflare Tunnel
132
+ * the cert CN does not need to match the served domain, so one shared
133
+ * cert per host is fine for staging; production hosts typically have
134
+ * a per-domain cert with the same basename as the brand.
135
+ */
136
+ readonly defaultSslCertName: string;
137
+ /** Postgres container name (CREATE DATABASE, migrations target this). */
138
+ readonly dbContainerName: string;
139
+ /** Admin role with CREATE DATABASE privilege. Password read from env. */
140
+ readonly dbAdminUser: string;
141
+ readonly cfAccountId: string;
142
+ readonly cfZoneId: string;
143
+ /**
144
+ * Names (not values) of env vars holding this host's secrets. The CLI
145
+ * reads these via `requireEnv()` at command runtime — never logged, never
146
+ * cached on disk. Keeping the names *here* means a new host only needs to
147
+ * declare its var names alongside its topology; no `ops/` code changes.
148
+ */
149
+ readonly envVarNames: Readonly<{
150
+ cdnApiKey: string;
151
+ dbAdminPassword: string;
152
+ cfApiToken: string;
153
+ }>;
154
+ }
155
+ /**
156
+ * Full host configuration consumed by every `ops/` primitive and command.
157
+ *
158
+ * Built by merging the static topology with secrets loaded from `process.env`.
159
+ * Always immutable (`Object.freeze`'d) — primitives must not mutate the config
160
+ * they receive.
161
+ */
162
+ export interface HostConfig extends HostTopologyStatic {
163
+ /** CDN API key for Worker /clean and /upload-coreui-zip authentication. */
164
+ readonly cdnApiKey: string;
165
+ /** Postgres admin password for CREATE DATABASE + GRANT operations. */
166
+ readonly dbAdminPassword: string;
167
+ /** Cloudflare API token scoped for cache purge (and future DNS ops). */
168
+ readonly cfApiToken: string;
169
+ }
170
+ /**
171
+ * Resolve a host configuration by alias.
172
+ *
173
+ * Reads secrets from `process.env` at call time — callers should ensure the
174
+ * loaded `.env` (or shell environment) has the required vars before invoking
175
+ * any command that ends up here. The static topology is hot-cached at module
176
+ * load; secrets are not cached, so changes to env take effect on next call.
177
+ *
178
+ * @throws Error if `alias` is missing, unknown, or any required env var is
179
+ * unset/empty. Error message names the missing variable.
180
+ */
181
+ export declare function getHostConfig(alias: string | undefined): HostConfig;
182
+ /** Type-guarded narrowing — use before indexing into STATIC_TOPOLOGY. */
183
+ export declare function isKnownHost(alias: string | undefined): alias is HostAlias;
184
+ /** Frozen list of supported aliases — drives CLI help text and validation. */
185
+ export declare function listKnownHosts(): readonly HostAlias[];
186
+ export interface ComposeArgs {
187
+ /** `-f <file>` flag — always present. */
188
+ readonly fileFlag: string;
189
+ /** Service positional argument — empty string for split-layout hosts. */
190
+ readonly serviceArg: string;
191
+ }
192
+ export declare function composeArgs(cfg: HostConfig, service: AppServiceKey): ComposeArgs;
193
+ export {};
194
+ //# sourceMappingURL=hosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosts.d.ts","sourceRoot":"","sources":["../../src/lib/hosts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * CiCore CLI — Per-host deployment topology
3
+ *
4
+ * Single source of truth for host-specific configuration. Static topology
5
+ * (registry namespace, container names, file paths, compose layout) is
6
+ * declared here at module load; secrets (API keys, DB password, CF token)
7
+ * are read lazily from `.env` via `getHostConfig()` only when actually
8
+ * needed by a command — so `vu --help` works without any env vars set.
9
+ *
10
+ * Onboarding a new platform = one entry in `STATIC_TOPOLOGY` plus the
11
+ * matching env vars in `.env`. No code changes elsewhere in `cli/`.
12
+ *
13
+ * Two hosts initially supported:
14
+ *
15
+ * - `vucore` — production (5.178.111.115). Prod-style 5-file compose
16
+ * under `/home/services/`. Images: `baynis/vucore-*`.
17
+ * CDN: `cdn.cicore.com.tr` (Worker fronting R2 bucket).
18
+ *
19
+ * - `cicore` — staging (10.20.20.11). Single-file compose under
20
+ * `/home/fmcicore/vucore/`. Images: `cisofttr/cicore-*`
21
+ * (private). CDN: `cdn.cicore.com.tr`. Nginx vhost proxies
22
+ * `/_nuxt/` directly to Nuxt — addons still go through CDN.
23
+ */
24
+ const STATIC_TOPOLOGY = Object.freeze({
25
+ // NOTE: vucore (prod, 5.178.111.115) entry removed 2026-05-20 — CLI is now
26
+ // cicore-only. The old vucore prod stack is stopped (cloudflared docker rm,
27
+ // compose down by user); cicore.com.tr is served from cicore staging as a
28
+ // tenant. To re-add a vucore host later, restore from git history.
29
+ cicore: {
30
+ alias: 'cicore',
31
+ brandName: 'CiCore (staging)',
32
+ sshUser: 'fmcicore', // NOPASSWD sudo on cicore staging
33
+ sshHostname: '10.20.20.11', // VPN address; public IP not routable yet
34
+ sshKeyPath: '~/.ssh/id_ed25519_cicore',
35
+ deployUser: 'cicore-deploy', // forced-command receiver (install-*.sh only)
36
+ registry: 'cisofttr',
37
+ imagePrefix: 'cicore',
38
+ // 2026-05-20: compose now uses cisofttr/cicore-* directly (retag pattern
39
+ // retired — see docs/planning/_archive/2026-05-20-core1-sunset…). Build
40
+ // pushes to cisofttr/cicore-{nuxt,php}; compose pulls the same tag.
41
+ composeImageName: 'cisofttr/cicore',
42
+ cdnEndpoint: 'https://cdn-api.cicore.com.tr',
43
+ cdnBaseUrl: 'https://cdn.cicore.com.tr',
44
+ cdnGatewayDir: 'cicore-cdn-gateway',
45
+ // Verified 2026-05-18: cicore_com_tr.conf has `proxy_pass http://nuxt_frontend`
46
+ // for `/_nuxt/`, so CoreUI R2 upload is a no-op here.
47
+ cdnBypassForNuxt: true,
48
+ workDir: '/home/fmcicore/vucore',
49
+ coresHostPath: '/home/fmcicore/vucore/cores',
50
+ singleCompose: true,
51
+ composeFiles: Object.freeze({
52
+ nuxt: 'docker-compose.yml',
53
+ php: 'docker-compose.yml',
54
+ nginx: 'docker-compose.yml',
55
+ }),
56
+ containerNames: Object.freeze({
57
+ nuxt: 'cicore_nuxt',
58
+ php: 'cicore_php',
59
+ nginx: 'cicore_global_nginx',
60
+ postgres: 'cicore_postgres',
61
+ redis: 'cicore_global_redis',
62
+ }),
63
+ nginxConfigDir: '/home/fmcicore/vucore/services/nginx/conf.d',
64
+ phpRuntimeUid: 1000, // sshUser fmcicore is also uid 1000 → chown is a no-op here
65
+ defaultSslCertName: 'cicore', // /etc/nginx/ssl/cicore.crt — shared cert (tunnel-fronted, CN-match not required)
66
+ dbContainerName: 'cicore_postgres',
67
+ dbAdminUser: 'vucore_admin',
68
+ cfAccountId: '9e0f66e5b6c62630d9c477c42951b7b3',
69
+ cfZoneId: '283449c641762f4bb80e070eaf774bc9',
70
+ envVarNames: Object.freeze({
71
+ cdnApiKey: 'CICORE_CDN_API_KEY',
72
+ dbAdminPassword: 'CICORE_DB_ADMIN_PASSWORD',
73
+ cfApiToken: 'CICORE_CLOUDFLARE_API_TOKEN',
74
+ }),
75
+ },
76
+ // ── mkt — Marketplace + whitelabel test box (5.178.111.115) ──────
77
+ // 2026-05-24: eski vucore prod kutusu temizlenip cicore-staging single-
78
+ // compose modeliyle yeniden kuruldu. cisofttr/cicore-* imajları (login OK).
79
+ // Container/DB adları cicore staging ile birebir (farklı host, çakışma yok).
80
+ // nuxt env_file ./services/nuxt.env'e decouple edildi (chicken-egg fix).
81
+ // CDN: şimdilik cicore worker'ı reuse (kutuya özel CDN worker = follow-up).
82
+ mkt: {
83
+ alias: 'mkt',
84
+ brandName: 'Marketplace/Whitelabel Test (5.178.111.115)',
85
+ sshUser: 'root',
86
+ sshHostname: '5.178.111.115',
87
+ sshKeyPath: '~/.ssh/id_ed25519_cicore',
88
+ // deployUser yok — forced-command receiver henüz kurulmadı; install-* legacy direct-SSH
89
+ registry: 'cisofttr',
90
+ imagePrefix: 'cicore',
91
+ composeImageName: 'cisofttr/cicore',
92
+ cdnEndpoint: 'https://cdn-api.cicore.com.tr',
93
+ cdnBaseUrl: 'https://cdn.cicore.com.tr',
94
+ cdnGatewayDir: 'cicore-cdn-gateway',
95
+ cdnBypassForNuxt: true,
96
+ workDir: '/opt/vucore',
97
+ coresHostPath: '/opt/vucore/cores',
98
+ singleCompose: true,
99
+ composeFiles: Object.freeze({
100
+ nuxt: 'docker-compose.yml',
101
+ php: 'docker-compose.yml',
102
+ nginx: 'docker-compose.yml',
103
+ }),
104
+ containerNames: Object.freeze({
105
+ nuxt: 'cicore_nuxt',
106
+ php: 'cicore_php',
107
+ nginx: 'cicore_global_nginx',
108
+ postgres: 'cicore_global_postgres',
109
+ redis: 'cicore_global_redis',
110
+ }),
111
+ nginxConfigDir: '/opt/vucore/services/nginx/conf.d',
112
+ phpRuntimeUid: 1000, // sshUser root ≠ runtime uid → chown core files to 1000 so php-fpm reads .env
113
+ defaultSslCertName: 'multinodex',
114
+ dbContainerName: 'cicore_global_postgres',
115
+ dbAdminUser: 'vucore_admin',
116
+ cfAccountId: '9e0f66e5b6c62630d9c477c42951b7b3', // Cisofttr
117
+ cfZoneId: 'ff2ab865cfcd46dd8175f687473d9f37', // multinodex.com
118
+ envVarNames: Object.freeze({
119
+ cdnApiKey: 'CICORE_CDN_API_KEY',
120
+ dbAdminPassword: 'MKT_DB_ADMIN_PASSWORD',
121
+ cfApiToken: 'CICORE_CLOUDFLARE_API_TOKEN',
122
+ }),
123
+ },
124
+ });
125
+ /**
126
+ * Resolve a host configuration by alias.
127
+ *
128
+ * Reads secrets from `process.env` at call time — callers should ensure the
129
+ * loaded `.env` (or shell environment) has the required vars before invoking
130
+ * any command that ends up here. The static topology is hot-cached at module
131
+ * load; secrets are not cached, so changes to env take effect on next call.
132
+ *
133
+ * @throws Error if `alias` is missing, unknown, or any required env var is
134
+ * unset/empty. Error message names the missing variable.
135
+ */
136
+ export function getHostConfig(alias) {
137
+ if (!alias) {
138
+ throw new Error(`Host alias required. Pass --host <alias>. ` +
139
+ `Known: ${listKnownHosts().join(', ')}.`);
140
+ }
141
+ if (!isKnownHost(alias)) {
142
+ throw new Error(`Unknown host '${alias}'. Known: ${listKnownHosts().join(', ')}. ` +
143
+ `To onboard a new platform, add an entry to STATIC_TOPOLOGY in ` +
144
+ `cli/src/lib/hosts.ts and declare its envVarNames in .env.`);
145
+ }
146
+ const topology = STATIC_TOPOLOGY[alias];
147
+ return Object.freeze({
148
+ ...topology,
149
+ cdnApiKey: requireEnv(topology.envVarNames.cdnApiKey, alias),
150
+ dbAdminPassword: requireEnv(topology.envVarNames.dbAdminPassword, alias),
151
+ cfApiToken: requireEnv(topology.envVarNames.cfApiToken, alias),
152
+ });
153
+ }
154
+ /** Type-guarded narrowing — use before indexing into STATIC_TOPOLOGY. */
155
+ export function isKnownHost(alias) {
156
+ return alias !== undefined && Object.prototype.hasOwnProperty.call(STATIC_TOPOLOGY, alias);
157
+ }
158
+ /** Frozen list of supported aliases — drives CLI help text and validation. */
159
+ export function listKnownHosts() {
160
+ return Object.freeze(Object.keys(STATIC_TOPOLOGY));
161
+ }
162
+ export function composeArgs(cfg, service) {
163
+ return Object.freeze({
164
+ fileFlag: `-f ${cfg.composeFiles[service]}`,
165
+ serviceArg: cfg.singleCompose ? service : '',
166
+ });
167
+ }
168
+ // ─────────────────────────────────────────────────────────────────────────
169
+ // Helpers (internal)
170
+ // ─────────────────────────────────────────────────────────────────────────
171
+ /**
172
+ * Read a required env var; throw a helpful error naming the missing var
173
+ * and the host that needed it.
174
+ */
175
+ function requireEnv(name, hostAlias) {
176
+ const raw = process.env[name];
177
+ if (raw === undefined || raw.trim() === '') {
178
+ throw new Error(`Host '${hostAlias}' requires env var '${name}' but it is unset or empty. ` +
179
+ `Set it in .env (auto-loaded by the CLI bootstrap) or your shell, then retry.`);
180
+ }
181
+ return raw.trim();
182
+ }
183
+ //# sourceMappingURL=hosts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/lib/hosts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * CiCore CLI Logger
3
+ *
4
+ * Provides consistent logging with colors and formatting
5
+ */
6
+ import { Ora } from 'ora';
7
+ /**
8
+ * Log levels
9
+ */
10
+ export declare const log: {
11
+ /**
12
+ * Info message (blue)
13
+ */
14
+ info: (message: string, ...args: any[]) => void;
15
+ /**
16
+ * Success message (green)
17
+ */
18
+ success: (message: string, ...args: any[]) => void;
19
+ /**
20
+ * Warning message (yellow)
21
+ */
22
+ warn: (message: string, ...args: any[]) => void;
23
+ /**
24
+ * Error message (red)
25
+ */
26
+ error: (message: string, ...args: any[]) => void;
27
+ /**
28
+ * Debug message (gray, only in verbose mode)
29
+ */
30
+ debug: (message: string, ...args: any[]) => void;
31
+ /**
32
+ * Step message (cyan, for multi-step operations)
33
+ */
34
+ step: (step: number, total: number, message: string) => void;
35
+ /**
36
+ * Title/header message
37
+ */
38
+ title: (message: string) => void;
39
+ /**
40
+ * Blank line
41
+ */
42
+ blank: () => void;
43
+ /**
44
+ * Key-value pair
45
+ */
46
+ kv: (key: string, value: string) => void;
47
+ /**
48
+ * List item
49
+ */
50
+ item: (message: string, indent?: number) => void;
51
+ /**
52
+ * Command being executed
53
+ */
54
+ cmd: (command: string) => void;
55
+ /**
56
+ * Box message
57
+ */
58
+ box: (title: string, content: string[]) => void;
59
+ };
60
+ /**
61
+ * Create a spinner for long-running operations
62
+ */
63
+ export declare function spinner(text: string): Ora;
64
+ /**
65
+ * Table formatting
66
+ */
67
+ export declare function formatTable(headers: string[], rows: string[][]): void;
68
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B;;GAEG;AACH,eAAO,MAAM,GAAG;IACd;;OAEG;oBACa,MAAM,WAAW,GAAG,EAAE;IAItC;;OAEG;uBACgB,MAAM,WAAW,GAAG,EAAE;IAIzC;;OAEG;oBACa,MAAM,WAAW,GAAG,EAAE;IAItC;;OAEG;qBACc,MAAM,WAAW,GAAG,EAAE;IAIvC;;OAEG;qBACc,MAAM,WAAW,GAAG,EAAE;IAMvC;;OAEG;iBACU,MAAM,SAAS,MAAM,WAAW,MAAM;IAInD;;OAEG;qBACc,MAAM;IAMvB;;OAEG;;IAKH;;OAEG;cACO,MAAM,SAAS,MAAM;IAI/B;;OAEG;oBACa,MAAM,WAAU,MAAM;IAKtC;;OAEG;mBACY,MAAM;IAMrB;;OAEG;iBACU,MAAM,WAAW,MAAM,EAAE;CAYvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAMzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAiBrE"}