@jahia/jahia-cli 0.1.4 → 0.3.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 (348) hide show
  1. package/README.md +271 -56
  2. package/bin/dev.js +5 -1
  3. package/dist/commands/config/init.d.ts +12 -0
  4. package/dist/commands/config/init.d.ts.map +1 -0
  5. package/dist/commands/config/init.js +76 -0
  6. package/dist/commands/config/init.js.map +1 -0
  7. package/dist/commands/environment/create.d.ts +27 -0
  8. package/dist/commands/environment/create.d.ts.map +1 -0
  9. package/dist/commands/environment/create.js +192 -0
  10. package/dist/commands/environment/create.js.map +1 -0
  11. package/dist/commands/environment/delete.d.ts +12 -0
  12. package/dist/commands/environment/delete.d.ts.map +1 -0
  13. package/dist/commands/environment/delete.js +69 -0
  14. package/dist/commands/environment/delete.js.map +1 -0
  15. package/dist/commands/environment/doctor.d.ts +13 -0
  16. package/dist/commands/environment/doctor.d.ts.map +1 -0
  17. package/dist/commands/environment/doctor.js +63 -0
  18. package/dist/commands/environment/doctor.js.map +1 -0
  19. package/dist/commands/environment/export.d.ts +35 -0
  20. package/dist/commands/environment/export.d.ts.map +1 -0
  21. package/dist/commands/environment/export.js +127 -0
  22. package/dist/commands/environment/export.js.map +1 -0
  23. package/dist/commands/environment/list.d.ts +11 -0
  24. package/dist/commands/environment/list.d.ts.map +1 -0
  25. package/dist/commands/environment/list.js +70 -0
  26. package/dist/commands/environment/list.js.map +1 -0
  27. package/dist/commands/environment/logs.d.ts +13 -0
  28. package/dist/commands/environment/logs.d.ts.map +1 -0
  29. package/dist/commands/environment/logs.js +77 -0
  30. package/dist/commands/environment/logs.js.map +1 -0
  31. package/dist/commands/environment/start.d.ts +12 -0
  32. package/dist/commands/environment/start.d.ts.map +1 -0
  33. package/dist/commands/environment/start.js +71 -0
  34. package/dist/commands/environment/start.js.map +1 -0
  35. package/dist/commands/environment/stop.d.ts +12 -0
  36. package/dist/commands/environment/stop.d.ts.map +1 -0
  37. package/dist/commands/environment/stop.js +71 -0
  38. package/dist/commands/environment/stop.js.map +1 -0
  39. package/dist/commands/init.d.ts +39 -0
  40. package/dist/commands/init.d.ts.map +1 -0
  41. package/dist/commands/init.js +178 -0
  42. package/dist/commands/init.js.map +1 -0
  43. package/dist/commands/jahia/alive.d.ts +18 -0
  44. package/dist/commands/jahia/alive.d.ts.map +1 -0
  45. package/dist/commands/jahia/alive.js +118 -0
  46. package/dist/commands/jahia/alive.js.map +1 -0
  47. package/dist/commands/jahia/provision.d.ts +68 -0
  48. package/dist/commands/jahia/provision.d.ts.map +1 -0
  49. package/dist/commands/jahia/provision.js +352 -0
  50. package/dist/commands/jahia/provision.js.map +1 -0
  51. package/dist/commands/tests/artifacts.d.ts +25 -0
  52. package/dist/commands/tests/artifacts.d.ts.map +1 -0
  53. package/dist/commands/tests/artifacts.js +112 -0
  54. package/dist/commands/tests/artifacts.js.map +1 -0
  55. package/dist/commands/tests/build.d.ts +30 -0
  56. package/dist/commands/tests/build.d.ts.map +1 -0
  57. package/dist/commands/tests/build.js +90 -0
  58. package/dist/commands/tests/build.js.map +1 -0
  59. package/dist/commands/tests/init.d.ts +56 -0
  60. package/dist/commands/tests/init.d.ts.map +1 -0
  61. package/dist/commands/tests/init.js +195 -0
  62. package/dist/commands/tests/init.js.map +1 -0
  63. package/dist/commands/tests/run.d.ts +28 -0
  64. package/dist/commands/tests/run.d.ts.map +1 -0
  65. package/dist/commands/tests/run.js +166 -0
  66. package/dist/commands/tests/run.js.map +1 -0
  67. package/dist/commands/workflow/init.d.ts +21 -0
  68. package/dist/commands/workflow/init.d.ts.map +1 -0
  69. package/dist/commands/workflow/init.js +84 -0
  70. package/dist/commands/workflow/init.js.map +1 -0
  71. package/dist/commands/workflow/run.d.ts +22 -0
  72. package/dist/commands/workflow/run.d.ts.map +1 -0
  73. package/dist/commands/workflow/run.js +111 -0
  74. package/dist/commands/workflow/run.js.map +1 -0
  75. package/dist/lib/artifacts/collect-all.d.ts +17 -0
  76. package/dist/lib/artifacts/collect-all.d.ts.map +1 -0
  77. package/dist/lib/artifacts/collect-all.js +107 -0
  78. package/dist/lib/artifacts/collect-all.js.map +1 -0
  79. package/dist/lib/artifacts/copy-container-artifacts.d.ts +13 -0
  80. package/dist/lib/artifacts/copy-container-artifacts.d.ts.map +1 -0
  81. package/dist/lib/artifacts/copy-container-artifacts.js +48 -0
  82. package/dist/lib/artifacts/copy-container-artifacts.js.map +1 -0
  83. package/dist/lib/artifacts/fetch-container-logs.d.ts +17 -0
  84. package/dist/lib/artifacts/fetch-container-logs.d.ts.map +1 -0
  85. package/dist/lib/artifacts/fetch-container-logs.js +36 -0
  86. package/dist/lib/artifacts/fetch-container-logs.js.map +1 -0
  87. package/dist/lib/artifacts/index.d.ts +6 -0
  88. package/dist/lib/artifacts/index.d.ts.map +1 -0
  89. package/dist/lib/artifacts/index.js +5 -0
  90. package/dist/lib/artifacts/index.js.map +1 -0
  91. package/dist/lib/artifacts/query-vlogs.d.ts +14 -0
  92. package/dist/lib/artifacts/query-vlogs.d.ts.map +1 -0
  93. package/dist/lib/artifacts/query-vlogs.js +33 -0
  94. package/dist/lib/artifacts/query-vlogs.js.map +1 -0
  95. package/dist/lib/artifacts/types.d.ts +28 -0
  96. package/dist/lib/artifacts/types.d.ts.map +1 -0
  97. package/dist/lib/artifacts/types.js +2 -0
  98. package/dist/lib/artifacts/types.js.map +1 -0
  99. package/dist/lib/components/cypress.d.ts +16 -0
  100. package/dist/lib/components/cypress.d.ts.map +1 -0
  101. package/dist/lib/components/cypress.js +35 -0
  102. package/dist/lib/components/cypress.js.map +1 -0
  103. package/dist/lib/components/index.d.ts +59 -0
  104. package/dist/lib/components/index.d.ts.map +1 -0
  105. package/dist/lib/components/index.js +114 -0
  106. package/dist/lib/components/index.js.map +1 -0
  107. package/dist/lib/components/jahia.d.ts +3 -0
  108. package/dist/lib/components/jahia.d.ts.map +1 -0
  109. package/dist/lib/components/jahia.js +38 -0
  110. package/dist/lib/components/jahia.js.map +1 -0
  111. package/dist/lib/components/smtp-server.d.ts +3 -0
  112. package/dist/lib/components/smtp-server.d.ts.map +1 -0
  113. package/dist/lib/components/smtp-server.js +30 -0
  114. package/dist/lib/components/smtp-server.js.map +1 -0
  115. package/dist/lib/components/types.d.ts +101 -0
  116. package/dist/lib/components/types.d.ts.map +1 -0
  117. package/dist/lib/components/types.js +2 -0
  118. package/dist/lib/components/types.js.map +1 -0
  119. package/dist/lib/components/victorialogs.d.ts +3 -0
  120. package/dist/lib/components/victorialogs.d.ts.map +1 -0
  121. package/dist/lib/components/victorialogs.js +29 -0
  122. package/dist/lib/components/victorialogs.js.map +1 -0
  123. package/dist/lib/config/build-blank-config.d.ts +6 -0
  124. package/dist/lib/config/build-blank-config.d.ts.map +1 -0
  125. package/dist/lib/config/build-blank-config.js +19 -0
  126. package/dist/lib/config/build-blank-config.js.map +1 -0
  127. package/dist/lib/config/config-to-yaml-with-comments.d.ts +11 -0
  128. package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -0
  129. package/dist/lib/config/config-to-yaml-with-comments.js +87 -0
  130. package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -0
  131. package/dist/lib/config/config-to-yaml.d.ts +7 -0
  132. package/dist/lib/config/config-to-yaml.d.ts.map +1 -0
  133. package/dist/lib/config/config-to-yaml.js +37 -0
  134. package/dist/lib/config/config-to-yaml.js.map +1 -0
  135. package/dist/lib/config/defaults.d.ts +15 -0
  136. package/dist/lib/config/defaults.d.ts.map +1 -0
  137. package/dist/lib/config/defaults.js +19 -0
  138. package/dist/lib/config/defaults.js.map +1 -0
  139. package/dist/lib/config/export-config.d.ts +15 -0
  140. package/dist/lib/config/export-config.d.ts.map +1 -0
  141. package/dist/lib/config/export-config.js +27 -0
  142. package/dist/lib/config/export-config.js.map +1 -0
  143. package/dist/lib/config/initialize-config-file.d.ts +12 -0
  144. package/dist/lib/config/initialize-config-file.d.ts.map +1 -0
  145. package/dist/lib/config/initialize-config-file.js +16 -0
  146. package/dist/lib/config/initialize-config-file.js.map +1 -0
  147. package/dist/lib/config/parser.d.ts +59 -0
  148. package/dist/lib/config/parser.d.ts.map +1 -0
  149. package/dist/lib/config/parser.js +281 -0
  150. package/dist/lib/config/parser.js.map +1 -0
  151. package/dist/lib/config/resolve-env-vars.d.ts +29 -0
  152. package/dist/lib/config/resolve-env-vars.d.ts.map +1 -0
  153. package/dist/lib/config/resolve-env-vars.js +47 -0
  154. package/dist/lib/config/resolve-env-vars.js.map +1 -0
  155. package/dist/lib/config/types.d.ts +120 -0
  156. package/dist/lib/config/types.d.ts.map +1 -0
  157. package/dist/lib/config/types.js +2 -0
  158. package/dist/lib/config/types.js.map +1 -0
  159. package/dist/lib/config/with-tests-version.d.ts +6 -0
  160. package/dist/lib/config/with-tests-version.d.ts.map +1 -0
  161. package/dist/lib/config/with-tests-version.js +11 -0
  162. package/dist/lib/config/with-tests-version.js.map +1 -0
  163. package/dist/lib/output/formatter.d.ts +38 -0
  164. package/dist/lib/output/formatter.d.ts.map +1 -0
  165. package/dist/lib/output/formatter.js +172 -0
  166. package/dist/lib/output/formatter.js.map +1 -0
  167. package/dist/lib/providers/docker/container.d.ts +63 -0
  168. package/dist/lib/providers/docker/container.d.ts.map +1 -0
  169. package/dist/lib/providers/docker/container.js +105 -0
  170. package/dist/lib/providers/docker/container.js.map +1 -0
  171. package/dist/lib/providers/docker/get-container-logs.d.ts +5 -0
  172. package/dist/lib/providers/docker/get-container-logs.d.ts.map +1 -0
  173. package/dist/lib/providers/docker/get-container-logs.js +17 -0
  174. package/dist/lib/providers/docker/get-container-logs.js.map +1 -0
  175. package/dist/lib/providers/docker/index.d.ts +8 -0
  176. package/dist/lib/providers/docker/index.d.ts.map +1 -0
  177. package/dist/lib/providers/docker/index.js +424 -0
  178. package/dist/lib/providers/docker/index.js.map +1 -0
  179. package/dist/lib/providers/docker/network.d.ts +17 -0
  180. package/dist/lib/providers/docker/network.d.ts.map +1 -0
  181. package/dist/lib/providers/docker/network.js +36 -0
  182. package/dist/lib/providers/docker/network.js.map +1 -0
  183. package/dist/lib/providers/docker/start-container.d.ts +5 -0
  184. package/dist/lib/providers/docker/start-container.d.ts.map +1 -0
  185. package/dist/lib/providers/docker/start-container.js +10 -0
  186. package/dist/lib/providers/docker/start-container.js.map +1 -0
  187. package/dist/lib/providers/docker/stop-container.d.ts +5 -0
  188. package/dist/lib/providers/docker/stop-container.d.ts.map +1 -0
  189. package/dist/lib/providers/docker/stop-container.js +10 -0
  190. package/dist/lib/providers/docker/stop-container.js.map +1 -0
  191. package/dist/lib/providers/docker/volume.d.ts +13 -0
  192. package/dist/lib/providers/docker/volume.d.ts.map +1 -0
  193. package/dist/lib/providers/docker/volume.js +23 -0
  194. package/dist/lib/providers/docker/volume.js.map +1 -0
  195. package/dist/lib/providers/index.d.ts +13 -0
  196. package/dist/lib/providers/index.d.ts.map +1 -0
  197. package/dist/lib/providers/index.js +22 -0
  198. package/dist/lib/providers/index.js.map +1 -0
  199. package/dist/lib/providers/jahiacloudv1/index.d.ts +7 -0
  200. package/dist/lib/providers/jahiacloudv1/index.d.ts.map +1 -0
  201. package/dist/lib/providers/jahiacloudv1/index.js +16 -0
  202. package/dist/lib/providers/jahiacloudv1/index.js.map +1 -0
  203. package/dist/lib/providers/types.d.ts +84 -0
  204. package/dist/lib/providers/types.d.ts.map +1 -0
  205. package/dist/lib/providers/types.js +2 -0
  206. package/dist/lib/providers/types.js.map +1 -0
  207. package/dist/lib/provisioning/detect-manifest-source.d.ts +7 -0
  208. package/dist/lib/provisioning/detect-manifest-source.d.ts.map +1 -0
  209. package/dist/lib/provisioning/detect-manifest-source.js +6 -0
  210. package/dist/lib/provisioning/detect-manifest-source.js.map +1 -0
  211. package/dist/lib/provisioning/fetch-manifest.d.ts +9 -0
  212. package/dist/lib/provisioning/fetch-manifest.d.ts.map +1 -0
  213. package/dist/lib/provisioning/fetch-manifest.js +17 -0
  214. package/dist/lib/provisioning/fetch-manifest.js.map +1 -0
  215. package/dist/lib/provisioning/filter-files.d.ts +7 -0
  216. package/dist/lib/provisioning/filter-files.d.ts.map +1 -0
  217. package/dist/lib/provisioning/filter-files.js +14 -0
  218. package/dist/lib/provisioning/filter-files.js.map +1 -0
  219. package/dist/lib/provisioning/read-manifest.d.ts +9 -0
  220. package/dist/lib/provisioning/read-manifest.d.ts.map +1 -0
  221. package/dist/lib/provisioning/read-manifest.js +12 -0
  222. package/dist/lib/provisioning/read-manifest.js.map +1 -0
  223. package/dist/lib/provisioning/resolve-asset-paths.d.ts +7 -0
  224. package/dist/lib/provisioning/resolve-asset-paths.d.ts.map +1 -0
  225. package/dist/lib/provisioning/resolve-asset-paths.js +22 -0
  226. package/dist/lib/provisioning/resolve-asset-paths.js.map +1 -0
  227. package/dist/lib/provisioning/submit-file-action.d.ts +29 -0
  228. package/dist/lib/provisioning/submit-file-action.d.ts.map +1 -0
  229. package/dist/lib/provisioning/submit-file-action.js +75 -0
  230. package/dist/lib/provisioning/submit-file-action.js.map +1 -0
  231. package/dist/lib/provisioning/submit-provisioning.d.ts +12 -0
  232. package/dist/lib/provisioning/submit-provisioning.d.ts.map +1 -0
  233. package/dist/lib/provisioning/submit-provisioning.js +70 -0
  234. package/dist/lib/provisioning/submit-provisioning.js.map +1 -0
  235. package/dist/lib/provisioning/types.d.ts +45 -0
  236. package/dist/lib/provisioning/types.d.ts.map +1 -0
  237. package/dist/lib/provisioning/types.js +2 -0
  238. package/dist/lib/provisioning/types.js.map +1 -0
  239. package/dist/lib/sam/index.d.ts +4 -0
  240. package/dist/lib/sam/index.d.ts.map +1 -0
  241. package/dist/lib/sam/index.js +3 -0
  242. package/dist/lib/sam/index.js.map +1 -0
  243. package/dist/lib/sam/query-sam-status.d.ts +6 -0
  244. package/dist/lib/sam/query-sam-status.d.ts.map +1 -0
  245. package/dist/lib/sam/query-sam-status.js +54 -0
  246. package/dist/lib/sam/query-sam-status.js.map +1 -0
  247. package/dist/lib/sam/types.d.ts +41 -0
  248. package/dist/lib/sam/types.d.ts.map +1 -0
  249. package/dist/lib/sam/types.js +2 -0
  250. package/dist/lib/sam/types.js.map +1 -0
  251. package/dist/lib/sam/wait-for-sam.d.ts +7 -0
  252. package/dist/lib/sam/wait-for-sam.d.ts.map +1 -0
  253. package/dist/lib/sam/wait-for-sam.js +31 -0
  254. package/dist/lib/sam/wait-for-sam.js.map +1 -0
  255. package/dist/lib/state/delete-state.d.ts +6 -0
  256. package/dist/lib/state/delete-state.d.ts.map +1 -0
  257. package/dist/lib/state/delete-state.js +16 -0
  258. package/dist/lib/state/delete-state.js.map +1 -0
  259. package/dist/lib/state/get-active-environment.d.ts +6 -0
  260. package/dist/lib/state/get-active-environment.d.ts.map +1 -0
  261. package/dist/lib/state/get-active-environment.js +9 -0
  262. package/dist/lib/state/get-active-environment.js.map +1 -0
  263. package/dist/lib/state/get-jahia-connection-defaults.d.ts +16 -0
  264. package/dist/lib/state/get-jahia-connection-defaults.d.ts.map +1 -0
  265. package/dist/lib/state/get-jahia-connection-defaults.js +28 -0
  266. package/dist/lib/state/get-jahia-connection-defaults.js.map +1 -0
  267. package/dist/lib/state/has-active-environment.d.ts +5 -0
  268. package/dist/lib/state/has-active-environment.d.ts.map +1 -0
  269. package/dist/lib/state/has-active-environment.js +9 -0
  270. package/dist/lib/state/has-active-environment.js.map +1 -0
  271. package/dist/lib/state/index.d.ts +11 -0
  272. package/dist/lib/state/index.d.ts.map +1 -0
  273. package/dist/lib/state/index.js +9 -0
  274. package/dist/lib/state/index.js.map +1 -0
  275. package/dist/lib/state/load-state.d.ts +7 -0
  276. package/dist/lib/state/load-state.d.ts.map +1 -0
  277. package/dist/lib/state/load-state.js +17 -0
  278. package/dist/lib/state/load-state.js.map +1 -0
  279. package/dist/lib/state/reconcile-with-docker.d.ts +19 -0
  280. package/dist/lib/state/reconcile-with-docker.d.ts.map +1 -0
  281. package/dist/lib/state/reconcile-with-docker.js +36 -0
  282. package/dist/lib/state/reconcile-with-docker.js.map +1 -0
  283. package/dist/lib/state/save-state.d.ts +7 -0
  284. package/dist/lib/state/save-state.d.ts.map +1 -0
  285. package/dist/lib/state/save-state.js +13 -0
  286. package/dist/lib/state/save-state.js.map +1 -0
  287. package/dist/lib/state/state-file-path.d.ts +8 -0
  288. package/dist/lib/state/state-file-path.d.ts.map +1 -0
  289. package/dist/lib/state/state-file-path.js +14 -0
  290. package/dist/lib/state/state-file-path.js.map +1 -0
  291. package/dist/lib/state/state-flag.d.ts +6 -0
  292. package/dist/lib/state/state-flag.d.ts.map +1 -0
  293. package/dist/lib/state/state-flag.js +12 -0
  294. package/dist/lib/state/state-flag.js.map +1 -0
  295. package/dist/lib/state/types.d.ts +30 -0
  296. package/dist/lib/state/types.d.ts.map +1 -0
  297. package/dist/lib/state/types.js +2 -0
  298. package/dist/lib/state/types.js.map +1 -0
  299. package/dist/lib/tests/build-image.d.ts +33 -0
  300. package/dist/lib/tests/build-image.d.ts.map +1 -0
  301. package/dist/lib/tests/build-image.js +59 -0
  302. package/dist/lib/tests/build-image.js.map +1 -0
  303. package/dist/lib/tests/clone-scaffolding.d.ts +16 -0
  304. package/dist/lib/tests/clone-scaffolding.d.ts.map +1 -0
  305. package/dist/lib/tests/clone-scaffolding.js +64 -0
  306. package/dist/lib/tests/clone-scaffolding.js.map +1 -0
  307. package/dist/lib/tests/exclusion-list.d.ts +11 -0
  308. package/dist/lib/tests/exclusion-list.d.ts.map +1 -0
  309. package/dist/lib/tests/exclusion-list.js +19 -0
  310. package/dist/lib/tests/exclusion-list.js.map +1 -0
  311. package/dist/lib/tests/gitignore-manager.d.ts +21 -0
  312. package/dist/lib/tests/gitignore-manager.d.ts.map +1 -0
  313. package/dist/lib/tests/gitignore-manager.js +47 -0
  314. package/dist/lib/tests/gitignore-manager.js.map +1 -0
  315. package/dist/lib/tests/index.d.ts +6 -0
  316. package/dist/lib/tests/index.d.ts.map +1 -0
  317. package/dist/lib/tests/index.js +5 -0
  318. package/dist/lib/tests/index.js.map +1 -0
  319. package/dist/lib/tests/sync-missing-files.d.ts +3 -0
  320. package/dist/lib/tests/sync-missing-files.d.ts.map +1 -0
  321. package/dist/lib/tests/sync-missing-files.js +65 -0
  322. package/dist/lib/tests/sync-missing-files.js.map +1 -0
  323. package/dist/lib/tests/types.d.ts +26 -0
  324. package/dist/lib/tests/types.d.ts.map +1 -0
  325. package/dist/lib/tests/types.js +2 -0
  326. package/dist/lib/tests/types.js.map +1 -0
  327. package/dist/lib/workflow/build-sample-workflow.d.ts +8 -0
  328. package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -0
  329. package/dist/lib/workflow/build-sample-workflow.js +39 -0
  330. package/dist/lib/workflow/build-sample-workflow.js.map +1 -0
  331. package/dist/lib/workflow/executor.d.ts +23 -0
  332. package/dist/lib/workflow/executor.d.ts.map +1 -0
  333. package/dist/lib/workflow/executor.js +129 -0
  334. package/dist/lib/workflow/executor.js.map +1 -0
  335. package/dist/lib/workflow/merge-workflow-into-config.d.ts +7 -0
  336. package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -0
  337. package/dist/lib/workflow/merge-workflow-into-config.js +9 -0
  338. package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -0
  339. package/dist/lib/workflow/resolve-workflow.d.ts +20 -0
  340. package/dist/lib/workflow/resolve-workflow.d.ts.map +1 -0
  341. package/dist/lib/workflow/resolve-workflow.js +38 -0
  342. package/dist/lib/workflow/resolve-workflow.js.map +1 -0
  343. package/dist/lib/workflow/types.d.ts +30 -0
  344. package/dist/lib/workflow/types.d.ts.map +1 -0
  345. package/dist/lib/workflow/types.js +25 -0
  346. package/dist/lib/workflow/types.js.map +1 -0
  347. package/oclif.manifest.json +1057 -1
  348. package/package.json +11 -4
@@ -0,0 +1,112 @@
1
+ import { resolve } from 'node:path';
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { collectAllArtifacts } from '../../lib/artifacts/collect-all.js';
4
+ import { getActiveEnvironment } from '../../lib/state/get-active-environment.js';
5
+ import { stateFilePath } from '../../lib/state/state-file-path.js';
6
+ import { stateFlag } from '../../lib/state/state-flag.js';
7
+ const DEFAULT_OUTPUT_DIR = './results/';
8
+ /**
9
+ * Formats a single component's collection result as human-readable text.
10
+ */
11
+ export const formatComponentResult = (c) => {
12
+ const lines = [];
13
+ const logStatus = c.logFile !== undefined
14
+ ? `✓ ${c.logFile} (${c.logSource ?? 'unknown'})`
15
+ : `✗ logs failed${c.logError !== undefined ? `: ${c.logError}` : ''}`;
16
+ lines.push(` ${c.componentName}: ${logStatus}`);
17
+ c.artifacts.forEach((a) => {
18
+ const status = a.success ? '✓' : '✗';
19
+ const suffix = a.success ? '' : ` — ${a.error ?? 'unknown error'}`;
20
+ lines.push(` ${status} ${a.path}${suffix}`);
21
+ });
22
+ return lines.join('\n');
23
+ };
24
+ /**
25
+ * Formats the full collection result as human-readable output.
26
+ */
27
+ export const formatCollectionHuman = (result) => {
28
+ const lines = [
29
+ `✓ Artifacts collected for environment "${result.envName}"`,
30
+ ` Output: ${result.outputDir}`,
31
+ '',
32
+ ];
33
+ result.components.forEach((c) => {
34
+ lines.push(formatComponentResult(c));
35
+ });
36
+ return lines.join('\n');
37
+ };
38
+ /**
39
+ * Builds JSON output for the collection result.
40
+ */
41
+ export const buildCollectionJson = (result) => JSON.stringify({
42
+ success: true,
43
+ envName: result.envName,
44
+ outputDir: result.outputDir,
45
+ components: result.components.map((c) => ({
46
+ name: c.componentName,
47
+ containerId: c.containerId,
48
+ logFile: c.logFile ?? null,
49
+ logSource: c.logSource ?? null,
50
+ logError: c.logError ?? null,
51
+ artifacts: c.artifacts.map((a) => ({
52
+ path: a.path,
53
+ success: a.success,
54
+ error: a.error ?? null,
55
+ })),
56
+ })),
57
+ }, null, 2);
58
+ export default class TestsArtifacts extends Command {
59
+ static description = 'Collect test artifacts (container logs and diagnostic files) from the active environment. ' +
60
+ 'Fetches logs from VictoriaLogs (with docker logs fallback) and copies container artifact paths ' +
61
+ 'defined in component definitions or config overrides.';
62
+ static examples = [
63
+ '<%= config.bin %> tests artifacts',
64
+ '<%= config.bin %> tests artifacts --output ./ci-results/',
65
+ '<%= config.bin %> tests artifacts --state /ci/workspace/state.json --json',
66
+ ];
67
+ static flags = {
68
+ state: stateFlag,
69
+ output: Flags.string({
70
+ char: 'o',
71
+ description: `Output directory for collected artifacts (default: ${DEFAULT_OUTPUT_DIR})`,
72
+ }),
73
+ json: Flags.boolean({
74
+ description: 'Output result as structured JSON (for AI agents and scripting)',
75
+ default: false,
76
+ }),
77
+ };
78
+ async run() {
79
+ const { flags } = await this.parse(TestsArtifacts);
80
+ const statePath = stateFilePath(flags.state);
81
+ const outputDir = resolve(flags.output ?? DEFAULT_OUTPUT_DIR);
82
+ try {
83
+ const env = await getActiveEnvironment(statePath);
84
+ if (env === undefined) {
85
+ throw new Error('No active environment found. Create one with "environment create" first.');
86
+ }
87
+ const result = await collectAllArtifacts({
88
+ env,
89
+ outputDir,
90
+ onProgress: flags.json ? undefined : (msg) => {
91
+ this.log(msg);
92
+ },
93
+ });
94
+ if (flags.json) {
95
+ this.log(buildCollectionJson(result));
96
+ }
97
+ else {
98
+ this.log(formatCollectionHuman(result));
99
+ }
100
+ }
101
+ catch (error) {
102
+ const message = error instanceof Error ? error.message : String(error);
103
+ if (flags.json) {
104
+ this.log(JSON.stringify({ success: false, error: message }, null, 2));
105
+ }
106
+ else {
107
+ this.error(message);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/commands/tests/artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { TestContainerConfig } from '../../lib/config/types.js';
3
+ /**
4
+ * Resolves the effective image tag from config.
5
+ * Priority: tests.container.tag > tests.scaffolding.version > 'latest'
6
+ */
7
+ export declare const resolveVersion: (containerConfig: TestContainerConfig | undefined, scaffoldingVersion: string | undefined) => string;
8
+ /**
9
+ * Resolves the effective image name from config.
10
+ */
11
+ export declare const resolveImageName: (containerConfig: TestContainerConfig | undefined) => string;
12
+ /**
13
+ * Formats a human-readable build success message.
14
+ */
15
+ export declare const formatBuildSuccess: (tag: string, dockerfile: string) => string;
16
+ /**
17
+ * Formats a human-readable build failure message.
18
+ */
19
+ export declare const formatBuildFailure: (error: string) => string;
20
+ export default class TestsBuild extends Command {
21
+ static description: string;
22
+ static examples: string[];
23
+ static flags: {
24
+ config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
25
+ 'no-cache': import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
+ };
28
+ run(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/tests/build.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAQrE;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,iBAAiB,mBAAmB,GAAG,SAAS,EAChD,oBAAoB,MAAM,GAAG,SAAS,KACrC,MAAgE,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,iBAAiB,mBAAmB,GAAG,SAAS,KAC/C,MAAsD,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,EAAE,YAAY,MAAM,KAAG,MACG,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MACV,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAIU;IAErC,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;MAcnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4ClC"}
@@ -0,0 +1,90 @@
1
+ import { resolve } from 'node:path';
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { execa } from 'execa';
4
+ import { loadConfigFile } from '../../lib/config/parser.js';
5
+ import { DEFAULT_DOCKERFILE, DEFAULT_IMAGE_NAME, buildBuildxArgs, resolveImageTag, } from '../../lib/tests/build-image.js';
6
+ /**
7
+ * Resolves the effective image tag from config.
8
+ * Priority: tests.container.tag > tests.scaffolding.version > 'latest'
9
+ */
10
+ export const resolveVersion = (containerConfig, scaffoldingVersion) => containerConfig?.tag ?? scaffoldingVersion ?? 'latest';
11
+ /**
12
+ * Resolves the effective image name from config.
13
+ */
14
+ export const resolveImageName = (containerConfig) => containerConfig?.image ?? DEFAULT_IMAGE_NAME;
15
+ /**
16
+ * Formats a human-readable build success message.
17
+ */
18
+ export const formatBuildSuccess = (tag, dockerfile) => `✓ Test image built successfully: ${tag}\n Dockerfile: ${dockerfile}`;
19
+ /**
20
+ * Formats a human-readable build failure message.
21
+ */
22
+ export const formatBuildFailure = (error) => `✗ Test image build failed\n ${error}`;
23
+ export default class TestsBuild extends Command {
24
+ static description = 'Build the test Docker image using docker buildx. ' +
25
+ 'All build parameters (dockerfile, image, tag, platform, buildArgs) are read from ' +
26
+ 'the config file under tests.container. The image stays local (no push) ' +
27
+ 'and can be run with "tests run".';
28
+ static examples = [
29
+ '<%= config.bin %> tests build -c config.yml',
30
+ '<%= config.bin %> tests build -c config.yml --no-cache',
31
+ '<%= config.bin %> tests build -c config.yml --json',
32
+ ];
33
+ static flags = {
34
+ config: Flags.string({
35
+ char: 'c',
36
+ description: 'Path to jahia-cli config file',
37
+ required: true,
38
+ }),
39
+ 'no-cache': Flags.boolean({
40
+ description: 'Build without using cache',
41
+ default: false,
42
+ }),
43
+ json: Flags.boolean({
44
+ description: 'Output result as structured JSON',
45
+ default: false,
46
+ }),
47
+ };
48
+ async run() {
49
+ const { flags } = await this.parse(TestsBuild);
50
+ try {
51
+ const config = await loadConfigFile(resolve(flags.config));
52
+ const containerConfig = config.tests?.container;
53
+ const version = resolveVersion(containerConfig, config.tests?.scaffolding?.version);
54
+ const imageName = resolveImageName(containerConfig);
55
+ const dockerfile = containerConfig?.dockerfile ?? DEFAULT_DOCKERFILE;
56
+ const tag = resolveImageTag(imageName, version);
57
+ const args = buildBuildxArgs({
58
+ dockerfile,
59
+ tag,
60
+ baseVersion: version,
61
+ platform: containerConfig?.platform,
62
+ noCache: flags['no-cache'],
63
+ extraBuildArgs: containerConfig?.buildArgs,
64
+ });
65
+ if (!flags.json) {
66
+ this.log(`Building test image: ${tag}`);
67
+ this.log(` Dockerfile: ${dockerfile}`);
68
+ this.log(` BASE_VERSION: ${version}`);
69
+ }
70
+ await execa('docker', [...args], { stdio: 'inherit' });
71
+ if (flags.json) {
72
+ this.log(JSON.stringify({ success: true, tag, dockerfile, version }, null, 2));
73
+ }
74
+ else {
75
+ this.log(formatBuildSuccess(tag, dockerfile));
76
+ }
77
+ }
78
+ catch (error) {
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ if (flags.json) {
81
+ this.log(JSON.stringify({ success: false, error: message }, null, 2));
82
+ }
83
+ else {
84
+ this.log(formatBuildFailure(message));
85
+ }
86
+ this.exit(1);
87
+ }
88
+ }
89
+ }
90
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/tests/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,eAAgD,EAChD,kBAAsC,EAC9B,EAAE,CAAC,eAAe,EAAE,GAAG,IAAI,kBAAkB,IAAI,QAAQ,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,eAAgD,EACxC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,UAAkB,EAAU,EAAE,CAC5E,oCAAoC,GAAG,mBAAmB,UAAU,EAAE,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC1D,gCAAgC,KAAK,EAAE,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAU,WAAW,GACzB,mDAAmD;QACnD,mFAAmF;QACnF,yEAAyE;QACzE,kCAAkC,CAAC;IAErC,MAAM,CAAU,QAAQ,GAAG;QACzB,6CAA6C;QAC7C,wDAAwD;QACxD,oDAAoD;KACrD,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,2BAA2B;YACxC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,kCAAkC;YAC/C,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;YAChD,MAAM,OAAO,GAAG,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACpF,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,eAAe,EAAE,UAAU,IAAI,kBAAkB,CAAC;YACrE,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEhD,MAAM,IAAI,GAAG,eAAe,CAAC;gBAC3B,UAAU;gBACV,GAAG;gBACH,WAAW,EAAE,OAAO;gBACpB,QAAQ,EAAE,eAAe,EAAE,QAAQ;gBACnC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC1B,cAAc,EAAE,eAAe,EAAE,SAAS;aAC3C,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEvD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { ScaffoldingConfig } from '../../lib/config/types.js';
3
+ import type { SyncAction, SyncMissingFilesResult } from '../../lib/tests/types.js';
4
+ /**
5
+ * Resolves ScaffoldingConfig from the loaded config, falling back to defaults.
6
+ */
7
+ export declare const resolveScaffoldingConfig: (scaffolding: ScaffoldingConfig | undefined) => ScaffoldingConfig;
8
+ /**
9
+ * Formats a single sync action line for human-readable output.
10
+ */
11
+ export declare const formatSyncLine: (action: SyncAction, path: string, reason: string) => string;
12
+ /**
13
+ * Builds human-readable output for the tests init command.
14
+ */
15
+ export declare const formatTestsInitHuman: (params: {
16
+ readonly version: string;
17
+ readonly destinationPath: string;
18
+ readonly repositoryUrl: string;
19
+ readonly scaffoldingPath: string;
20
+ readonly result: SyncMissingFilesResult;
21
+ readonly configFile: string;
22
+ readonly configCreated: boolean;
23
+ readonly gitignoreEntriesAdded: number;
24
+ readonly logLines: readonly string[];
25
+ }) => string;
26
+ /**
27
+ * Builds structured JSON output for AI agents and scripting.
28
+ */
29
+ export declare const buildTestsInitSuccessJson: (params: {
30
+ readonly version: string;
31
+ readonly destinationPath: string;
32
+ readonly repositoryUrl: string;
33
+ readonly scaffoldingPath: string;
34
+ readonly result: SyncMissingFilesResult;
35
+ readonly configFile: string;
36
+ readonly configCreated: boolean;
37
+ readonly gitignoreEntriesAdded: number;
38
+ }) => string;
39
+ /**
40
+ * Builds structured JSON failure output.
41
+ */
42
+ export declare const buildTestsInitFailureJson: (params: {
43
+ readonly destinationPath: string;
44
+ readonly message: string;
45
+ }) => string;
46
+ export default class TestsInit extends Command {
47
+ static description: string;
48
+ static examples: string[];
49
+ static flags: {
50
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
51
+ path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
52
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
53
+ };
54
+ run(): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/tests/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAU7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAInE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAInF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,iBAAiB,GAAG,SAAS,KACzC,iBAID,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,UAAU,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,KAAG,MAOjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,KAAG,MAWH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC,KAAG,MAkBD,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,KAAG,MAUD,CAAC;AAEJ,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,OAAgB,WAAW,SAGwC;IAEnE,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;MAcnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+GlC"}
@@ -0,0 +1,195 @@
1
+ import { access, mkdtemp, rm } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join, resolve } from 'node:path';
4
+ import { Command, Flags } from '@oclif/core';
5
+ import { buildBlankConfig } from '../../lib/config/build-blank-config.js';
6
+ import { DEFAULT_SCAFFOLDING_PATH, DEFAULT_SCAFFOLDING_REPOSITORY, DEFAULT_SCAFFOLDING_VERSION, } from '../../lib/config/defaults.js';
7
+ import { initializeConfigFile } from '../../lib/config/initialize-config-file.js';
8
+ import { loadConfigFile } from '../../lib/config/parser.js';
9
+ import { cloneScaffolding } from '../../lib/tests/clone-scaffolding.js';
10
+ import { updateGitignore } from '../../lib/tests/gitignore-manager.js';
11
+ import { syncMissingFiles } from '../../lib/tests/sync-missing-files.js';
12
+ const DEFAULT_CONFIG_FILE = 'jahia-cli.config.yml';
13
+ /**
14
+ * Resolves ScaffoldingConfig from the loaded config, falling back to defaults.
15
+ */
16
+ export const resolveScaffoldingConfig = (scaffolding) => ({
17
+ repository: scaffolding?.repository ?? DEFAULT_SCAFFOLDING_REPOSITORY,
18
+ path: scaffolding?.path ?? DEFAULT_SCAFFOLDING_PATH,
19
+ version: scaffolding?.version ?? DEFAULT_SCAFFOLDING_VERSION,
20
+ });
21
+ /**
22
+ * Formats a single sync action line for human-readable output.
23
+ */
24
+ export const formatSyncLine = (action, path, reason) => {
25
+ const labels = {
26
+ copied: ' SYNC: ',
27
+ kept: ' SKIP: ',
28
+ ignored: ' IGNORED:',
29
+ };
30
+ return `${labels[action]} ${path} (${reason})`;
31
+ };
32
+ /**
33
+ * Builds human-readable output for the tests init command.
34
+ */
35
+ export const formatTestsInitHuman = (params) => {
36
+ const lines = [
37
+ ...params.logLines,
38
+ '',
39
+ `Summary: ${String(params.result.copied.length)} synced, ${String(params.result.kept.length)} skipped, ${String(params.result.ignored.length)} ignored`,
40
+ params.gitignoreEntriesAdded > 0
41
+ ? `.gitignore updated: ${String(params.gitignoreEntriesAdded)} entries in managed section`
42
+ : '.gitignore: no new entries needed',
43
+ `✓ Test scaffolding initialized (${params.version})`,
44
+ ];
45
+ return lines.join('\n');
46
+ };
47
+ /**
48
+ * Builds structured JSON output for AI agents and scripting.
49
+ */
50
+ export const buildTestsInitSuccessJson = (params) => JSON.stringify({
51
+ success: true,
52
+ version: params.version,
53
+ repository: params.repositoryUrl,
54
+ scaffoldingPath: params.scaffoldingPath,
55
+ destination: params.destinationPath,
56
+ synced: params.result.copied,
57
+ skipped: params.result.kept,
58
+ ignored: params.result.ignored,
59
+ gitignoreUpdated: params.gitignoreEntriesAdded > 0,
60
+ gitignoreEntriesAdded: params.gitignoreEntriesAdded,
61
+ configFile: params.configFile,
62
+ configCreated: params.configCreated,
63
+ }, null, 2);
64
+ /**
65
+ * Builds structured JSON failure output.
66
+ */
67
+ export const buildTestsInitFailureJson = (params) => JSON.stringify({
68
+ success: false,
69
+ error: 'tests_init_failed',
70
+ destination: params.destinationPath,
71
+ message: params.message,
72
+ }, null, 2);
73
+ export default class TestsInit extends Command {
74
+ static description = 'Initialize local test scaffolding from a remote repository. ' +
75
+ 'Syncs missing files from the configured scaffolding source and manages .gitignore ' +
76
+ 'so that remotely-sourced files are not accidentally committed.';
77
+ static examples = [
78
+ '<%= config.bin %> tests init',
79
+ '<%= config.bin %> tests init --config ./my-config.yml',
80
+ '<%= config.bin %> tests init --path ./tests --json',
81
+ ];
82
+ static flags = {
83
+ config: Flags.string({
84
+ char: 'c',
85
+ description: `Path to config file (default: ${DEFAULT_CONFIG_FILE})`,
86
+ env: 'JAHIA_CLI_CONFIG',
87
+ }),
88
+ path: Flags.string({
89
+ char: 'p',
90
+ description: 'Override destination directory for scaffolding files',
91
+ }),
92
+ json: Flags.boolean({
93
+ description: 'Output result as structured JSON (for AI agents and scripting)',
94
+ default: false,
95
+ }),
96
+ };
97
+ async run() {
98
+ const { flags } = await this.parse(TestsInit);
99
+ const configFile = resolve(flags.config ?? DEFAULT_CONFIG_FILE);
100
+ const destinationPath = resolve(flags.path ?? '.');
101
+ const gitignorePath = join(destinationPath, '.gitignore');
102
+ const tempDir = await mkdtemp(join(tmpdir(), 'jahia-cli-tests-init-'));
103
+ const logLines = [];
104
+ try {
105
+ // Load or generate config
106
+ const configExists = await access(configFile).then(() => true).catch(() => false);
107
+ const configCreated = !configExists;
108
+ if (!configExists) {
109
+ this.log(`Config not found at ${configFile}, generating blank...`);
110
+ logLines.push(`Config not found at ${configFile}, generating blank...`);
111
+ const blank = buildBlankConfig();
112
+ await initializeConfigFile({ outputFile: configFile, config: blank, force: false });
113
+ }
114
+ const config = await loadConfigFile(configFile);
115
+ const scaffolding = resolveScaffoldingConfig(config.tests?.scaffolding);
116
+ logLines.push(`Loading config from ${configFile}...`);
117
+ logLines.push(`Repository: ${scaffolding.repository}`);
118
+ logLines.push(`Scaffolding path: ${scaffolding.path}`);
119
+ logLines.push(`Version: ${scaffolding.version}`);
120
+ // Resolve version and clone
121
+ const resolvedVersion = scaffolding.version === 'latest' ? undefined : scaffolding.version;
122
+ logLines.push(scaffolding.version === 'latest'
123
+ ? `Resolving latest tag for ${scaffolding.repository}...`
124
+ : `Using version: ${scaffolding.version}`);
125
+ const cloned = await cloneScaffolding({
126
+ version: resolvedVersion,
127
+ workDir: tempDir,
128
+ repositoryUrl: scaffolding.repository.endsWith('.git')
129
+ ? scaffolding.repository
130
+ : `${scaffolding.repository}.git`,
131
+ scaffoldingPath: scaffolding.path.replace(/\/$/, ''),
132
+ });
133
+ logLines.push(`Resolved version: ${cloned.version}`);
134
+ logLines.push(`Cloning ${scaffolding.repository}@${cloned.version}...`);
135
+ logLines.push(`Syncing ${scaffolding.path} → ${destinationPath}`);
136
+ logLines.push('');
137
+ // Sync files with per-file logging
138
+ const result = await syncMissingFiles({
139
+ sourceDir: cloned.scaffoldingDir,
140
+ destinationDir: destinationPath,
141
+ logger: (action, relativePath, reason) => {
142
+ logLines.push(formatSyncLine(action, relativePath, reason));
143
+ },
144
+ });
145
+ // Update .gitignore with all remote-sourced files (copied + kept).
146
+ // This ensures the managed section persists across re-runs — files stay
147
+ // gitignored until the user manually removes the entry to "own" that file.
148
+ const gitignoreResult = await updateGitignore(gitignorePath, [...result.copied, ...result.kept]);
149
+ if (gitignoreResult.entriesAdded > 0) {
150
+ logLines.push('');
151
+ logLines.push(`.gitignore updated: ${String(gitignoreResult.entriesAdded)} entries added to managed section`);
152
+ }
153
+ // Output
154
+ if (flags.json) {
155
+ this.log(buildTestsInitSuccessJson({
156
+ version: cloned.version,
157
+ destinationPath,
158
+ repositoryUrl: scaffolding.repository,
159
+ scaffoldingPath: scaffolding.path,
160
+ result,
161
+ configFile,
162
+ configCreated,
163
+ gitignoreEntriesAdded: gitignoreResult.entriesAdded,
164
+ }));
165
+ }
166
+ else {
167
+ this.log(formatTestsInitHuman({
168
+ version: cloned.version,
169
+ destinationPath,
170
+ repositoryUrl: scaffolding.repository,
171
+ scaffoldingPath: scaffolding.path,
172
+ result,
173
+ configFile,
174
+ configCreated,
175
+ gitignoreEntriesAdded: gitignoreResult.entriesAdded,
176
+ logLines,
177
+ }));
178
+ }
179
+ }
180
+ catch (error) {
181
+ const message = error instanceof Error ? error.message : String(error);
182
+ if (flags.json) {
183
+ this.log(buildTestsInitFailureJson({ destinationPath, message }));
184
+ }
185
+ else {
186
+ this.error(message);
187
+ }
188
+ this.exit(1);
189
+ }
190
+ finally {
191
+ await rm(tempDir, { recursive: true, force: true });
192
+ }
193
+ }
194
+ }
195
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/tests/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { ResolvedComponent } from '../../lib/components/types.js';
3
+ import type { TestContainerConfig } from '../../lib/config/types.js';
4
+ /**
5
+ * Formats a human-readable test run start message.
6
+ */
7
+ export declare const formatRunStart: (image: string, network: string, name: string) => string;
8
+ /**
9
+ * Formats a human-readable test completion message.
10
+ */
11
+ export declare const formatRunComplete: (name: string, exitCode: number) => string;
12
+ /**
13
+ * Builds a ResolvedComponent for the cypress test runner using the component registry.
14
+ * Reads image/tag from tests.container config and applies env injections from sibling components.
15
+ */
16
+ export declare const buildCypressComponent: (envComponents: readonly string[], containerConfig: TestContainerConfig | undefined, scaffoldingVersion: string | undefined, extraEnv: Readonly<Record<string, string>>) => ResolvedComponent;
17
+ export default class TestsRun extends Command {
18
+ static description: string;
19
+ static examples: string[];
20
+ static flags: {
21
+ config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
22
+ state: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
+ env: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
25
+ };
26
+ run(): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/tests/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOrE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,MAOhE,CAAC;AAEf;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,MAIF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,eAAe,SAAS,MAAM,EAAE,EAChC,iBAAiB,mBAAmB,GAAG,SAAS,EAChD,oBAAoB,MAAM,GAAG,SAAS,EACtC,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACzC,iBAgCF,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAG2E;IAEtG,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;;MAgBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4FlC"}