@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,118 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { getActiveEnvironment } from '../../lib/state/get-active-environment.js';
3
+ import { getJahiaConnectionDefaults } from '../../lib/state/get-jahia-connection-defaults.js';
4
+ import { stateFilePath } from '../../lib/state/state-file-path.js';
5
+ import { stateFlag } from '../../lib/state/state-flag.js';
6
+ import { waitForSam } from '../../lib/sam/wait-for-sam.js';
7
+ const DEFAULT_INTERVAL = 2;
8
+ const DEFAULT_TIMEOUT = 300;
9
+ const DEFAULT_COUNT = 5;
10
+ const DEFAULT_SEVERITY = 'MEDIUM';
11
+ export default class JahiaAlive extends Command {
12
+ static description = 'Wait until the Jahia environment is fully alive and responding GREEN. ' +
13
+ 'Polls the Server Availability Manager (SAM) healthcheck endpoint and requires ' +
14
+ 'N consecutive GREEN responses before declaring the environment ready.';
15
+ static examples = [
16
+ '<%= config.bin %> jahia alive',
17
+ '<%= config.bin %> jahia alive --count 10 --timeout 600',
18
+ '<%= config.bin %> jahia alive --url http://localhost:8080 --json',
19
+ '<%= config.bin %> jahia alive --state /ci/workspace/state.json',
20
+ ];
21
+ static flags = {
22
+ state: stateFlag,
23
+ url: Flags.string({
24
+ description: 'Jahia base URL (default: from state, or http://localhost:8080)',
25
+ }),
26
+ username: Flags.string({
27
+ char: 'u',
28
+ description: 'Jahia username for SAM authentication (default: from state, or root)',
29
+ }),
30
+ password: Flags.string({
31
+ char: 'P',
32
+ description: 'Jahia password for SAM authentication (default: from state, or root1234)',
33
+ }),
34
+ severity: Flags.string({
35
+ char: 's',
36
+ description: 'SAM probe severity to evaluate (LOW, MEDIUM, HIGH, CRITICAL)',
37
+ default: DEFAULT_SEVERITY,
38
+ }),
39
+ interval: Flags.integer({
40
+ char: 'i',
41
+ description: 'Seconds between health checks',
42
+ default: DEFAULT_INTERVAL,
43
+ }),
44
+ timeout: Flags.integer({
45
+ char: 't',
46
+ description: 'Maximum seconds to wait before failing',
47
+ default: DEFAULT_TIMEOUT,
48
+ }),
49
+ count: Flags.integer({
50
+ char: 'c',
51
+ description: 'Number of consecutive GREEN responses required',
52
+ default: DEFAULT_COUNT,
53
+ }),
54
+ json: Flags.boolean({
55
+ description: 'Output result as structured JSON (for AI agents and scripting)',
56
+ default: false,
57
+ }),
58
+ };
59
+ async run() {
60
+ const { flags } = await this.parse(JahiaAlive);
61
+ const stateOverride = flags.state;
62
+ const statePath = stateFilePath(stateOverride);
63
+ const env = await getActiveEnvironment(stateOverride);
64
+ const envName = env?.name ?? 'unknown';
65
+ const defaults = getJahiaConnectionDefaults(env);
66
+ const url = flags.url ?? defaults.url;
67
+ const username = flags.username ?? defaults.username;
68
+ const password = flags.password ?? defaults.password;
69
+ if (!flags.json) {
70
+ this.log(`Waiting for Jahia environment "${envName}" to become alive...`);
71
+ this.log(` URL: ${url}`);
72
+ this.log(` Requires: ${String(flags.count)} consecutive GREEN at ${String(flags.interval)}s interval`);
73
+ this.log(` Timeout: ${String(flags.timeout)}s`);
74
+ this.log(` State: ${statePath}`);
75
+ this.log('');
76
+ }
77
+ const onPoll = (event) => {
78
+ if (flags.json)
79
+ return;
80
+ const icon = event.health === 'GREEN' ? '●' : '○';
81
+ const progress = event.health === 'GREEN' ? ` (${String(event.consecutiveGreen)}/${String(flags.count)})` : '';
82
+ const detail = event.message ? ` — ${event.message}` : '';
83
+ this.log(` ${icon} [${String(event.elapsedSeconds).padStart(4)}s] ${event.health}${progress}${detail}`);
84
+ };
85
+ try {
86
+ const result = await waitForSam({
87
+ url,
88
+ username,
89
+ password,
90
+ severity: flags.severity,
91
+ intervalSeconds: flags.interval,
92
+ timeoutSeconds: flags.timeout,
93
+ consecutiveCount: flags.count,
94
+ onPoll,
95
+ });
96
+ if (flags.json) {
97
+ this.log(JSON.stringify({ ...result, environment: envName, stateFile: statePath }, null, 2));
98
+ }
99
+ else {
100
+ this.log('');
101
+ this.log(`✓ Environment "${envName}" is alive and responding GREEN`);
102
+ this.log(` Confirmed in ${String(result.elapsedSeconds)}s with ${String(result.consecutiveGreen)} consecutive checks`);
103
+ }
104
+ }
105
+ catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ if (flags.json) {
108
+ this.log(JSON.stringify({ success: false, environment: envName, stateFile: statePath, error: 'timeout', message }, null, 2));
109
+ }
110
+ else {
111
+ this.log('');
112
+ this.log(`✗ ${message}`);
113
+ }
114
+ this.exit(1);
115
+ }
116
+ }
117
+ }
118
+ //# sourceMappingURL=alive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alive.js","sourceRoot":"","sources":["../../../src/commands/jahia/alive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { FileActionResult, ProvisioningAttachment } from '../../lib/provisioning/types.js';
3
+ /**
4
+ * Detected provisioning mode based on provided flags.
5
+ */
6
+ export type ProvisionMode = 'manifest' | 'modules' | 'scripts';
7
+ /**
8
+ * Reads file attachments from disk and returns them as ProvisioningAttachment objects.
9
+ */
10
+ export declare const loadAttachments: (filePaths: readonly string[]) => Promise<readonly ProvisioningAttachment[]>;
11
+ /**
12
+ * Formats a provisioning result for human-readable output.
13
+ */
14
+ export declare const formatProvisioningResultHuman: (result: {
15
+ readonly success: boolean;
16
+ readonly statusCode: number;
17
+ readonly message: string;
18
+ readonly responseBody: unknown;
19
+ readonly manifest: string;
20
+ readonly durationMs: number;
21
+ }) => string;
22
+ /**
23
+ * Formats a single file action result for human-readable output.
24
+ */
25
+ export declare const formatFileActionResult: (result: FileActionResult) => string;
26
+ /**
27
+ * Detects the provisioning mode from provided flags.
28
+ * Exactly one of manifest, modules, or scripts must be provided.
29
+ */
30
+ export declare const detectProvisionMode: (flags: {
31
+ readonly manifest: string | undefined;
32
+ readonly modules: string | undefined;
33
+ readonly scripts: string | undefined;
34
+ }) => ProvisionMode;
35
+ /**
36
+ * Validates flag combinations for cross-flag business rules.
37
+ */
38
+ export declare const validateFlagCombinations: (mode: ProvisionMode, flags: {
39
+ readonly assets: string | undefined;
40
+ readonly file: readonly string[] | undefined;
41
+ readonly filter: string | undefined;
42
+ }) => void;
43
+ export default class JahiaProvision extends Command {
44
+ static description: string;
45
+ static examples: string[];
46
+ static flags: {
47
+ state: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
48
+ manifest: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
49
+ modules: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
50
+ scripts: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
51
+ filter: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
52
+ url: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
53
+ username: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
54
+ password: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
55
+ file: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
56
+ assets: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
57
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
58
+ };
59
+ run(): Promise<void>;
60
+ private runManifestMode;
61
+ private runFileActionMode;
62
+ /**
63
+ * Processes files sequentially, stopping on the first failure.
64
+ * Returns all results up to and including the failed one (if any).
65
+ */
66
+ private processFilesSequentially;
67
+ }
68
+ //# sourceMappingURL=provision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../../src/commands/jahia/provision.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAU7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAMhG;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,SAAS,MAAM,EAAE,KAC3B,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAQ3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,KAAG,MAkBH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,KAAG,MAIjE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,KAAG,aAqBH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,aAAa,EACnB,OAAO;IACL,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,KACA,IAYF,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,OAAgB,WAAW,SAMmE;IAE9F,OAAgB,QAAQ,WAQtB;IAEF,OAAgB,KAAK;;;;;;;;;;;;MA0CnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA+CnB,eAAe;YA0Ff,iBAAiB;IA6F/B;;;OAGG;YACW,wBAAwB;CAyCvC"}
@@ -0,0 +1,352 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { basename } from 'node:path';
3
+ import { Command, Flags } from '@oclif/core';
4
+ import { detectManifestSource } from '../../lib/provisioning/detect-manifest-source.js';
5
+ import { fetchManifest } from '../../lib/provisioning/fetch-manifest.js';
6
+ import { filterFiles } from '../../lib/provisioning/filter-files.js';
7
+ import { readManifest } from '../../lib/provisioning/read-manifest.js';
8
+ import { resolveAssetPaths } from '../../lib/provisioning/resolve-asset-paths.js';
9
+ import { submitFileAction } from '../../lib/provisioning/submit-file-action.js';
10
+ import { submitProvisioning } from '../../lib/provisioning/submit-provisioning.js';
11
+ import { getActiveEnvironment } from '../../lib/state/get-active-environment.js';
12
+ import { getJahiaConnectionDefaults } from '../../lib/state/get-jahia-connection-defaults.js';
13
+ import { stateFilePath } from '../../lib/state/state-file-path.js';
14
+ import { stateFlag } from '../../lib/state/state-flag.js';
15
+ /**
16
+ * Reads file attachments from disk and returns them as ProvisioningAttachment objects.
17
+ */
18
+ export const loadAttachments = async (filePaths) => {
19
+ const results = await Promise.all(filePaths.map(async (filePath) => {
20
+ const content = await readFile(filePath);
21
+ return { filename: basename(filePath), content };
22
+ }));
23
+ return results;
24
+ };
25
+ /**
26
+ * Formats a provisioning result for human-readable output.
27
+ */
28
+ export const formatProvisioningResultHuman = (result) => {
29
+ const icon = result.success ? '✓' : '✗';
30
+ const status = result.success ? 'Provisioning succeeded' : 'Provisioning failed';
31
+ const lines = [
32
+ `${icon} ${status}`,
33
+ ` Manifest: ${result.manifest}`,
34
+ ` Status: HTTP ${String(result.statusCode)}`,
35
+ ` Duration: ${String(result.durationMs)}ms`,
36
+ ];
37
+ if (result.responseBody !== undefined) {
38
+ lines.push('');
39
+ lines.push(JSON.stringify(result.responseBody, null, 2));
40
+ }
41
+ else if (!result.success && result.message) {
42
+ lines.push(` Error: ${result.message}`);
43
+ }
44
+ return lines.join('\n');
45
+ };
46
+ /**
47
+ * Formats a single file action result for human-readable output.
48
+ */
49
+ export const formatFileActionResult = (result) => {
50
+ const icon = result.success ? '✓' : '✗';
51
+ const status = result.success ? 'succeeded' : 'failed';
52
+ return ` ${icon} ${result.filename} — ${status} (HTTP ${String(result.statusCode)}, ${String(result.durationMs)}ms)`;
53
+ };
54
+ /**
55
+ * Detects the provisioning mode from provided flags.
56
+ * Exactly one of manifest, modules, or scripts must be provided.
57
+ */
58
+ export const detectProvisionMode = (flags) => {
59
+ const modes = [
60
+ ...(flags.manifest !== undefined ? ['manifest'] : []),
61
+ ...(flags.modules !== undefined ? ['modules'] : []),
62
+ ...(flags.scripts !== undefined ? ['scripts'] : []),
63
+ ];
64
+ if (modes.length === 0) {
65
+ throw new Error('One of --manifest, --modules, or --scripts is required.');
66
+ }
67
+ if (modes.length > 1) {
68
+ throw new Error('Only one of --manifest, --modules, or --scripts can be specified at a time.');
69
+ }
70
+ const mode = modes[0];
71
+ if (mode === undefined) {
72
+ throw new Error('One of --manifest, --modules, or --scripts is required.');
73
+ }
74
+ return mode;
75
+ };
76
+ /**
77
+ * Validates flag combinations for cross-flag business rules.
78
+ */
79
+ export const validateFlagCombinations = (mode, flags) => {
80
+ if (mode !== 'manifest' && flags.assets !== undefined) {
81
+ throw new Error('--assets can only be used with --manifest mode.');
82
+ }
83
+ if (mode !== 'manifest' && flags.file !== undefined && flags.file.length > 0) {
84
+ throw new Error('--file can only be used with --manifest mode.');
85
+ }
86
+ if (flags.filter !== undefined && mode === 'manifest' && flags.assets === undefined) {
87
+ throw new Error('--filter requires --assets when used with --manifest mode.');
88
+ }
89
+ };
90
+ export default class JahiaProvision extends Command {
91
+ static description = 'Execute provisioning operations against a running Jahia instance. ' +
92
+ 'Three modes are available (exactly one per invocation):\n' +
93
+ ' --manifest: Submit a YAML provisioning manifest with optional file attachments.\n' +
94
+ ' --modules: Upload module files (JARs) from a directory, one at a time.\n' +
95
+ ' --scripts: Execute provisioning scripts from a directory, one at a time.\n' +
96
+ 'Use --filter to limit which files are processed (glob pattern, matched against filename).';
97
+ static examples = [
98
+ '<%= config.bin %> jahia provision --manifest ./provisioning/setup.yaml',
99
+ '<%= config.bin %> jahia provision --manifest ./setup.yaml --assets ./artifacts',
100
+ '<%= config.bin %> jahia provision --manifest ./setup.yaml --assets ./artifacts --filter "*.jar"',
101
+ '<%= config.bin %> jahia provision --modules ./modules/',
102
+ '<%= config.bin %> jahia provision --modules ./modules/ --filter "*-SNAPSHOT.jar"',
103
+ '<%= config.bin %> jahia provision --scripts ./scripts/',
104
+ '<%= config.bin %> jahia provision --scripts ./scripts/ --filter "*.groovy"',
105
+ ];
106
+ static flags = {
107
+ state: stateFlag,
108
+ manifest: Flags.string({
109
+ char: 'm',
110
+ description: 'Path to a local YAML file or a public URL of the provisioning manifest',
111
+ exclusive: ['modules', 'scripts'],
112
+ }),
113
+ modules: Flags.string({
114
+ description: 'Path to a directory of module files to install (one at a time via installOrUpgradeBundle)',
115
+ exclusive: ['manifest', 'scripts', 'assets', 'file'],
116
+ }),
117
+ scripts: Flags.string({
118
+ description: 'Path to a directory of provisioning scripts to execute (one at a time via executeScript)',
119
+ exclusive: ['manifest', 'modules', 'assets', 'file'],
120
+ }),
121
+ filter: Flags.string({
122
+ description: 'Glob pattern to filter files in --assets, --modules, or --scripts directories (default: all files). Example: "*-SNAPSHOT.jar"',
123
+ }),
124
+ url: Flags.string({
125
+ description: 'Jahia base URL (default: from state, or http://localhost:8080)',
126
+ }),
127
+ username: Flags.string({
128
+ char: 'u',
129
+ description: 'Jahia admin username (default: from state, or root)',
130
+ }),
131
+ password: Flags.string({
132
+ char: 'P',
133
+ description: 'Jahia admin password (default: from state, or root1234)',
134
+ }),
135
+ file: Flags.string({
136
+ char: 'f',
137
+ description: 'File attachment to include with --manifest (can be specified multiple times)',
138
+ multiple: true,
139
+ }),
140
+ assets: Flags.string({
141
+ char: 'a',
142
+ description: 'Directory whose files are attached to the --manifest provisioning request',
143
+ }),
144
+ json: Flags.boolean({
145
+ description: 'Output result as structured JSON (for AI agents and scripting)',
146
+ default: false,
147
+ }),
148
+ };
149
+ async run() {
150
+ const { flags } = await this.parse(JahiaProvision);
151
+ const statePath = stateFilePath(flags.state);
152
+ const env = await getActiveEnvironment(flags.state);
153
+ const envName = env?.name ?? 'unknown';
154
+ const defaults = getJahiaConnectionDefaults(env);
155
+ const url = flags.url ?? defaults.url;
156
+ const username = flags.username ?? defaults.username;
157
+ const password = flags.password ?? defaults.password;
158
+ try {
159
+ const mode = detectProvisionMode({
160
+ manifest: flags.manifest,
161
+ modules: flags.modules,
162
+ scripts: flags.scripts,
163
+ });
164
+ validateFlagCombinations(mode, {
165
+ assets: flags.assets,
166
+ file: flags.file,
167
+ filter: flags.filter,
168
+ });
169
+ if (mode === 'manifest') {
170
+ await this.runManifestMode(flags, { url, username, password, envName, statePath });
171
+ }
172
+ else {
173
+ const dirPath = mode === 'modules' ? flags.modules : flags.scripts;
174
+ if (dirPath === undefined) {
175
+ throw new Error(`Missing directory path for --${mode} mode.`);
176
+ }
177
+ const actionType = mode === 'modules' ? 'module' : 'script';
178
+ await this.runFileActionMode(dirPath, actionType, mode, flags, { url, username, password, envName });
179
+ }
180
+ }
181
+ catch (error) {
182
+ const message = error instanceof Error ? error.message : String(error);
183
+ if (flags.json) {
184
+ this.log(JSON.stringify({ success: false, environment: envName, stateFile: statePath, error: message }, null, 2));
185
+ }
186
+ else {
187
+ this.log(`\n✗ ${message}`);
188
+ }
189
+ this.exit(1);
190
+ }
191
+ }
192
+ async runManifestMode(flags, connection) {
193
+ const manifest = flags.manifest;
194
+ if (manifest === undefined) {
195
+ throw new Error('--manifest is required in manifest mode.');
196
+ }
197
+ const source = detectManifestSource(manifest);
198
+ if (!flags.json) {
199
+ this.log(`Provisioning Jahia environment "${connection.envName}"...`);
200
+ this.log(` Manifest: ${manifest} (${source})`);
201
+ this.log(` URL: ${connection.url}`);
202
+ this.log(` State: ${connection.statePath}`);
203
+ if (flags.file && flags.file.length > 0) {
204
+ this.log(` Files: ${flags.file.join(', ')}`);
205
+ }
206
+ if (flags.assets) {
207
+ this.log(` Assets: ${flags.assets}`);
208
+ }
209
+ this.log('');
210
+ }
211
+ if (!flags.json) {
212
+ this.log(source === 'url' ? 'Downloading manifest...' : 'Reading manifest...');
213
+ }
214
+ const { content: manifestContent, filename: manifestFilename } = source === 'url'
215
+ ? await fetchManifest(manifest)
216
+ : await readManifest(manifest);
217
+ const filePaths = flags.file ?? [];
218
+ const rawAssetPaths = flags.assets !== undefined ? await resolveAssetPaths(flags.assets) : [];
219
+ const assetPaths = flags.filter !== undefined
220
+ ? filterFiles(rawAssetPaths, flags.filter)
221
+ : rawAssetPaths;
222
+ const allPaths = [...filePaths, ...assetPaths];
223
+ const attachments = await loadAttachments(allPaths);
224
+ if (!flags.json && attachments.length > 0) {
225
+ this.log(`Attaching ${String(attachments.length)} file(s)...`);
226
+ }
227
+ if (!flags.json) {
228
+ this.log('Submitting provisioning script...');
229
+ }
230
+ const result = await submitProvisioning({
231
+ url: connection.url,
232
+ username: connection.username,
233
+ password: connection.password,
234
+ manifestContent,
235
+ manifestFilename,
236
+ attachments,
237
+ });
238
+ if (flags.json) {
239
+ this.log(JSON.stringify({ ...result, environment: connection.envName, stateFile: connection.statePath, source }, null, 2));
240
+ }
241
+ else {
242
+ this.log('');
243
+ this.log(formatProvisioningResultHuman(result));
244
+ }
245
+ if (!result.success) {
246
+ this.exit(1);
247
+ }
248
+ }
249
+ async runFileActionMode(dirPath, actionType, mode, flags, connection) {
250
+ const rawPaths = await resolveAssetPaths(dirPath);
251
+ const filePaths = flags.filter !== undefined
252
+ ? filterFiles(rawPaths, flags.filter)
253
+ : [...rawPaths].sort((a, b) => basename(a).localeCompare(basename(b)));
254
+ if (filePaths.length === 0) {
255
+ const filterNote = flags.filter !== undefined ? ` matching "${flags.filter}"` : '';
256
+ if (flags.json) {
257
+ this.log(JSON.stringify({
258
+ success: true,
259
+ mode,
260
+ directory: dirPath,
261
+ filter: flags.filter ?? '*',
262
+ filesMatched: 0,
263
+ filesProcessed: 0,
264
+ results: [],
265
+ }, null, 2));
266
+ }
267
+ else {
268
+ this.log(`No files found in "${dirPath}"${filterNote}. Nothing to do.`);
269
+ }
270
+ return;
271
+ }
272
+ const modeLabel = mode === 'modules' ? 'module' : 'script';
273
+ if (!flags.json) {
274
+ this.log(`▶ Uploading ${String(filePaths.length)} ${modeLabel}(s) from "${dirPath}"...`);
275
+ this.log(` URL: ${connection.url}`);
276
+ if (flags.filter !== undefined) {
277
+ this.log(` Filter: ${flags.filter}`);
278
+ }
279
+ this.log('');
280
+ }
281
+ const results = await this.processFilesSequentially(filePaths, actionType, connection);
282
+ const lastResult = results[results.length - 1];
283
+ const hasFailed = lastResult !== undefined && !lastResult.success;
284
+ if (!flags.json) {
285
+ results.forEach((r) => {
286
+ this.log(formatFileActionResult(r));
287
+ });
288
+ }
289
+ if (hasFailed) {
290
+ if (flags.json) {
291
+ this.log(JSON.stringify({
292
+ success: false,
293
+ mode,
294
+ directory: dirPath,
295
+ filter: flags.filter ?? '*',
296
+ filesMatched: filePaths.length,
297
+ filesProcessed: results.length,
298
+ failedAt: lastResult.filename,
299
+ results,
300
+ }, null, 2));
301
+ }
302
+ else {
303
+ this.log(`\n✗ Stopped after failure on "${lastResult.filename}".`);
304
+ }
305
+ this.exit(1);
306
+ return;
307
+ }
308
+ if (flags.json) {
309
+ this.log(JSON.stringify({
310
+ success: true,
311
+ mode,
312
+ directory: dirPath,
313
+ filter: flags.filter ?? '*',
314
+ filesMatched: filePaths.length,
315
+ filesProcessed: results.length,
316
+ results,
317
+ }, null, 2));
318
+ }
319
+ else {
320
+ this.log(`\n✓ All ${String(results.length)} ${modeLabel}(s) processed successfully.`);
321
+ }
322
+ }
323
+ /**
324
+ * Processes files sequentially, stopping on the first failure.
325
+ * Returns all results up to and including the failed one (if any).
326
+ */
327
+ async processFilesSequentially(filePaths, actionType, connection) {
328
+ const processNext = async (remaining, accumulated) => {
329
+ const nextPath = remaining[0];
330
+ if (nextPath === undefined) {
331
+ return accumulated;
332
+ }
333
+ const content = await readFile(nextPath);
334
+ const filename = basename(nextPath);
335
+ const result = await submitFileAction({
336
+ url: connection.url,
337
+ username: connection.username,
338
+ password: connection.password,
339
+ filename,
340
+ content,
341
+ actionType,
342
+ });
343
+ const updated = [...accumulated, result];
344
+ if (!result.success) {
345
+ return updated;
346
+ }
347
+ return processNext(remaining.slice(1), updated);
348
+ };
349
+ return processNext(filePaths, []);
350
+ }
351
+ }
352
+ //# sourceMappingURL=provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../src/commands/jahia/provision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Command } from '@oclif/core';
2
+ import type { CollectionResult, ComponentCollectionResult } from '../../lib/artifacts/types.js';
3
+ /**
4
+ * Formats a single component's collection result as human-readable text.
5
+ */
6
+ export declare const formatComponentResult: (c: ComponentCollectionResult) => string;
7
+ /**
8
+ * Formats the full collection result as human-readable output.
9
+ */
10
+ export declare const formatCollectionHuman: (result: CollectionResult) => string;
11
+ /**
12
+ * Builds JSON output for the collection result.
13
+ */
14
+ export declare const buildCollectionJson: (result: CollectionResult) => string;
15
+ export default class TestsArtifacts extends Command {
16
+ static description: string;
17
+ static examples: string[];
18
+ static flags: {
19
+ state: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ };
23
+ run(): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/commands/tests/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAOhG;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,GAAG,yBAAyB,KAAG,MAcpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,gBAAgB,KAAG,MAYhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,gBAAgB,KAAG,MAqB5D,CAAC;AAEJ,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,OAAgB,WAAW,SAG+B;IAE1D,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;MAUnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiClC"}