@jahia/jahia-cli 0.1.4 → 0.2.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.
- package/README.md +271 -56
- package/bin/dev.js +5 -1
- package/dist/commands/config/init.d.ts +12 -0
- package/dist/commands/config/init.d.ts.map +1 -0
- package/dist/commands/config/init.js +76 -0
- package/dist/commands/config/init.js.map +1 -0
- package/dist/commands/environment/create.d.ts +27 -0
- package/dist/commands/environment/create.d.ts.map +1 -0
- package/dist/commands/environment/create.js +192 -0
- package/dist/commands/environment/create.js.map +1 -0
- package/dist/commands/environment/delete.d.ts +12 -0
- package/dist/commands/environment/delete.d.ts.map +1 -0
- package/dist/commands/environment/delete.js +69 -0
- package/dist/commands/environment/delete.js.map +1 -0
- package/dist/commands/environment/doctor.d.ts +13 -0
- package/dist/commands/environment/doctor.d.ts.map +1 -0
- package/dist/commands/environment/doctor.js +63 -0
- package/dist/commands/environment/doctor.js.map +1 -0
- package/dist/commands/environment/export.d.ts +35 -0
- package/dist/commands/environment/export.d.ts.map +1 -0
- package/dist/commands/environment/export.js +127 -0
- package/dist/commands/environment/export.js.map +1 -0
- package/dist/commands/environment/list.d.ts +11 -0
- package/dist/commands/environment/list.d.ts.map +1 -0
- package/dist/commands/environment/list.js +70 -0
- package/dist/commands/environment/list.js.map +1 -0
- package/dist/commands/environment/logs.d.ts +13 -0
- package/dist/commands/environment/logs.d.ts.map +1 -0
- package/dist/commands/environment/logs.js +77 -0
- package/dist/commands/environment/logs.js.map +1 -0
- package/dist/commands/environment/start.d.ts +12 -0
- package/dist/commands/environment/start.d.ts.map +1 -0
- package/dist/commands/environment/start.js +71 -0
- package/dist/commands/environment/start.js.map +1 -0
- package/dist/commands/environment/stop.d.ts +12 -0
- package/dist/commands/environment/stop.d.ts.map +1 -0
- package/dist/commands/environment/stop.js +71 -0
- package/dist/commands/environment/stop.js.map +1 -0
- package/dist/commands/init.d.ts +39 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +178 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/jahia/alive.d.ts +18 -0
- package/dist/commands/jahia/alive.d.ts.map +1 -0
- package/dist/commands/jahia/alive.js +118 -0
- package/dist/commands/jahia/alive.js.map +1 -0
- package/dist/commands/jahia/provision.d.ts +33 -0
- package/dist/commands/jahia/provision.d.ts.map +1 -0
- package/dist/commands/jahia/provision.js +164 -0
- package/dist/commands/jahia/provision.js.map +1 -0
- package/dist/commands/tests/init.d.ts +56 -0
- package/dist/commands/tests/init.d.ts.map +1 -0
- package/dist/commands/tests/init.js +195 -0
- package/dist/commands/tests/init.js.map +1 -0
- package/dist/commands/workflow/init.d.ts +21 -0
- package/dist/commands/workflow/init.d.ts.map +1 -0
- package/dist/commands/workflow/init.js +83 -0
- package/dist/commands/workflow/init.js.map +1 -0
- package/dist/commands/workflow/run.d.ts +21 -0
- package/dist/commands/workflow/run.d.ts.map +1 -0
- package/dist/commands/workflow/run.js +97 -0
- package/dist/commands/workflow/run.js.map +1 -0
- package/dist/lib/components/index.d.ts +59 -0
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/components/index.js +111 -0
- package/dist/lib/components/index.js.map +1 -0
- package/dist/lib/components/jahia.d.ts +3 -0
- package/dist/lib/components/jahia.d.ts.map +1 -0
- package/dist/lib/components/jahia.js +37 -0
- package/dist/lib/components/jahia.js.map +1 -0
- package/dist/lib/components/smtp-server.d.ts +3 -0
- package/dist/lib/components/smtp-server.d.ts.map +1 -0
- package/dist/lib/components/smtp-server.js +29 -0
- package/dist/lib/components/smtp-server.js.map +1 -0
- package/dist/lib/components/types.d.ts +89 -0
- package/dist/lib/components/types.d.ts.map +1 -0
- package/dist/lib/components/types.js +2 -0
- package/dist/lib/components/types.js.map +1 -0
- package/dist/lib/components/victorialogs.d.ts +3 -0
- package/dist/lib/components/victorialogs.d.ts.map +1 -0
- package/dist/lib/components/victorialogs.js +29 -0
- package/dist/lib/components/victorialogs.js.map +1 -0
- package/dist/lib/config/build-blank-config.d.ts +6 -0
- package/dist/lib/config/build-blank-config.d.ts.map +1 -0
- package/dist/lib/config/build-blank-config.js +19 -0
- package/dist/lib/config/build-blank-config.js.map +1 -0
- package/dist/lib/config/config-to-yaml-with-comments.d.ts +11 -0
- package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -0
- package/dist/lib/config/config-to-yaml-with-comments.js +75 -0
- package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -0
- package/dist/lib/config/config-to-yaml.d.ts +7 -0
- package/dist/lib/config/config-to-yaml.d.ts.map +1 -0
- package/dist/lib/config/config-to-yaml.js +26 -0
- package/dist/lib/config/config-to-yaml.js.map +1 -0
- package/dist/lib/config/defaults.d.ts +15 -0
- package/dist/lib/config/defaults.d.ts.map +1 -0
- package/dist/lib/config/defaults.js +19 -0
- package/dist/lib/config/defaults.js.map +1 -0
- package/dist/lib/config/export-config.d.ts +15 -0
- package/dist/lib/config/export-config.d.ts.map +1 -0
- package/dist/lib/config/export-config.js +27 -0
- package/dist/lib/config/export-config.js.map +1 -0
- package/dist/lib/config/initialize-config-file.d.ts +12 -0
- package/dist/lib/config/initialize-config-file.d.ts.map +1 -0
- package/dist/lib/config/initialize-config-file.js +16 -0
- package/dist/lib/config/initialize-config-file.js.map +1 -0
- package/dist/lib/config/parser.d.ts +46 -0
- package/dist/lib/config/parser.d.ts.map +1 -0
- package/dist/lib/config/parser.js +196 -0
- package/dist/lib/config/parser.js.map +1 -0
- package/dist/lib/config/resolve-env-vars.d.ts +29 -0
- package/dist/lib/config/resolve-env-vars.d.ts.map +1 -0
- package/dist/lib/config/resolve-env-vars.js +47 -0
- package/dist/lib/config/resolve-env-vars.js.map +1 -0
- package/dist/lib/config/types.d.ts +74 -0
- package/dist/lib/config/types.d.ts.map +1 -0
- package/dist/lib/config/types.js +2 -0
- package/dist/lib/config/types.js.map +1 -0
- package/dist/lib/config/with-tests-version.d.ts +6 -0
- package/dist/lib/config/with-tests-version.d.ts.map +1 -0
- package/dist/lib/config/with-tests-version.js +11 -0
- package/dist/lib/config/with-tests-version.js.map +1 -0
- package/dist/lib/output/formatter.d.ts +38 -0
- package/dist/lib/output/formatter.d.ts.map +1 -0
- package/dist/lib/output/formatter.js +172 -0
- package/dist/lib/output/formatter.js.map +1 -0
- package/dist/lib/providers/docker/container.d.ts +61 -0
- package/dist/lib/providers/docker/container.d.ts.map +1 -0
- package/dist/lib/providers/docker/container.js +101 -0
- package/dist/lib/providers/docker/container.js.map +1 -0
- package/dist/lib/providers/docker/get-container-logs.d.ts +5 -0
- package/dist/lib/providers/docker/get-container-logs.d.ts.map +1 -0
- package/dist/lib/providers/docker/get-container-logs.js +17 -0
- package/dist/lib/providers/docker/get-container-logs.js.map +1 -0
- package/dist/lib/providers/docker/index.d.ts +8 -0
- package/dist/lib/providers/docker/index.d.ts.map +1 -0
- package/dist/lib/providers/docker/index.js +424 -0
- package/dist/lib/providers/docker/index.js.map +1 -0
- package/dist/lib/providers/docker/network.d.ts +17 -0
- package/dist/lib/providers/docker/network.d.ts.map +1 -0
- package/dist/lib/providers/docker/network.js +36 -0
- package/dist/lib/providers/docker/network.js.map +1 -0
- package/dist/lib/providers/docker/start-container.d.ts +5 -0
- package/dist/lib/providers/docker/start-container.d.ts.map +1 -0
- package/dist/lib/providers/docker/start-container.js +10 -0
- package/dist/lib/providers/docker/start-container.js.map +1 -0
- package/dist/lib/providers/docker/stop-container.d.ts +5 -0
- package/dist/lib/providers/docker/stop-container.d.ts.map +1 -0
- package/dist/lib/providers/docker/stop-container.js +10 -0
- package/dist/lib/providers/docker/stop-container.js.map +1 -0
- package/dist/lib/providers/docker/volume.d.ts +13 -0
- package/dist/lib/providers/docker/volume.d.ts.map +1 -0
- package/dist/lib/providers/docker/volume.js +23 -0
- package/dist/lib/providers/docker/volume.js.map +1 -0
- package/dist/lib/providers/index.d.ts +13 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +22 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/jahiacloudv1/index.d.ts +7 -0
- package/dist/lib/providers/jahiacloudv1/index.d.ts.map +1 -0
- package/dist/lib/providers/jahiacloudv1/index.js +16 -0
- package/dist/lib/providers/jahiacloudv1/index.js.map +1 -0
- package/dist/lib/providers/types.d.ts +84 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +2 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/lib/provisioning/detect-manifest-source.d.ts +7 -0
- package/dist/lib/provisioning/detect-manifest-source.d.ts.map +1 -0
- package/dist/lib/provisioning/detect-manifest-source.js +6 -0
- package/dist/lib/provisioning/detect-manifest-source.js.map +1 -0
- package/dist/lib/provisioning/fetch-manifest.d.ts +9 -0
- package/dist/lib/provisioning/fetch-manifest.d.ts.map +1 -0
- package/dist/lib/provisioning/fetch-manifest.js +17 -0
- package/dist/lib/provisioning/fetch-manifest.js.map +1 -0
- package/dist/lib/provisioning/read-manifest.d.ts +9 -0
- package/dist/lib/provisioning/read-manifest.d.ts.map +1 -0
- package/dist/lib/provisioning/read-manifest.js +12 -0
- package/dist/lib/provisioning/read-manifest.js.map +1 -0
- package/dist/lib/provisioning/resolve-asset-paths.d.ts +7 -0
- package/dist/lib/provisioning/resolve-asset-paths.d.ts.map +1 -0
- package/dist/lib/provisioning/resolve-asset-paths.js +22 -0
- package/dist/lib/provisioning/resolve-asset-paths.js.map +1 -0
- package/dist/lib/provisioning/submit-provisioning.d.ts +12 -0
- package/dist/lib/provisioning/submit-provisioning.d.ts.map +1 -0
- package/dist/lib/provisioning/submit-provisioning.js +70 -0
- package/dist/lib/provisioning/submit-provisioning.js.map +1 -0
- package/dist/lib/provisioning/types.d.ts +34 -0
- package/dist/lib/provisioning/types.d.ts.map +1 -0
- package/dist/lib/provisioning/types.js +2 -0
- package/dist/lib/provisioning/types.js.map +1 -0
- package/dist/lib/sam/index.d.ts +4 -0
- package/dist/lib/sam/index.d.ts.map +1 -0
- package/dist/lib/sam/index.js +3 -0
- package/dist/lib/sam/index.js.map +1 -0
- package/dist/lib/sam/query-sam-status.d.ts +6 -0
- package/dist/lib/sam/query-sam-status.d.ts.map +1 -0
- package/dist/lib/sam/query-sam-status.js +54 -0
- package/dist/lib/sam/query-sam-status.js.map +1 -0
- package/dist/lib/sam/types.d.ts +41 -0
- package/dist/lib/sam/types.d.ts.map +1 -0
- package/dist/lib/sam/types.js +2 -0
- package/dist/lib/sam/types.js.map +1 -0
- package/dist/lib/sam/wait-for-sam.d.ts +7 -0
- package/dist/lib/sam/wait-for-sam.d.ts.map +1 -0
- package/dist/lib/sam/wait-for-sam.js +31 -0
- package/dist/lib/sam/wait-for-sam.js.map +1 -0
- package/dist/lib/state/delete-state.d.ts +6 -0
- package/dist/lib/state/delete-state.d.ts.map +1 -0
- package/dist/lib/state/delete-state.js +16 -0
- package/dist/lib/state/delete-state.js.map +1 -0
- package/dist/lib/state/get-active-environment.d.ts +6 -0
- package/dist/lib/state/get-active-environment.d.ts.map +1 -0
- package/dist/lib/state/get-active-environment.js +9 -0
- package/dist/lib/state/get-active-environment.js.map +1 -0
- package/dist/lib/state/get-jahia-connection-defaults.d.ts +16 -0
- package/dist/lib/state/get-jahia-connection-defaults.d.ts.map +1 -0
- package/dist/lib/state/get-jahia-connection-defaults.js +28 -0
- package/dist/lib/state/get-jahia-connection-defaults.js.map +1 -0
- package/dist/lib/state/has-active-environment.d.ts +5 -0
- package/dist/lib/state/has-active-environment.d.ts.map +1 -0
- package/dist/lib/state/has-active-environment.js +9 -0
- package/dist/lib/state/has-active-environment.js.map +1 -0
- package/dist/lib/state/index.d.ts +11 -0
- package/dist/lib/state/index.d.ts.map +1 -0
- package/dist/lib/state/index.js +9 -0
- package/dist/lib/state/index.js.map +1 -0
- package/dist/lib/state/load-state.d.ts +7 -0
- package/dist/lib/state/load-state.d.ts.map +1 -0
- package/dist/lib/state/load-state.js +17 -0
- package/dist/lib/state/load-state.js.map +1 -0
- package/dist/lib/state/reconcile-with-docker.d.ts +19 -0
- package/dist/lib/state/reconcile-with-docker.d.ts.map +1 -0
- package/dist/lib/state/reconcile-with-docker.js +36 -0
- package/dist/lib/state/reconcile-with-docker.js.map +1 -0
- package/dist/lib/state/save-state.d.ts +7 -0
- package/dist/lib/state/save-state.d.ts.map +1 -0
- package/dist/lib/state/save-state.js +13 -0
- package/dist/lib/state/save-state.js.map +1 -0
- package/dist/lib/state/state-file-path.d.ts +8 -0
- package/dist/lib/state/state-file-path.d.ts.map +1 -0
- package/dist/lib/state/state-file-path.js +14 -0
- package/dist/lib/state/state-file-path.js.map +1 -0
- package/dist/lib/state/state-flag.d.ts +6 -0
- package/dist/lib/state/state-flag.d.ts.map +1 -0
- package/dist/lib/state/state-flag.js +12 -0
- package/dist/lib/state/state-flag.js.map +1 -0
- package/dist/lib/state/types.d.ts +30 -0
- package/dist/lib/state/types.d.ts.map +1 -0
- package/dist/lib/state/types.js +2 -0
- package/dist/lib/state/types.js.map +1 -0
- package/dist/lib/tests/clone-scaffolding.d.ts +16 -0
- package/dist/lib/tests/clone-scaffolding.d.ts.map +1 -0
- package/dist/lib/tests/clone-scaffolding.js +64 -0
- package/dist/lib/tests/clone-scaffolding.js.map +1 -0
- package/dist/lib/tests/exclusion-list.d.ts +11 -0
- package/dist/lib/tests/exclusion-list.d.ts.map +1 -0
- package/dist/lib/tests/exclusion-list.js +19 -0
- package/dist/lib/tests/exclusion-list.js.map +1 -0
- package/dist/lib/tests/gitignore-manager.d.ts +21 -0
- package/dist/lib/tests/gitignore-manager.d.ts.map +1 -0
- package/dist/lib/tests/gitignore-manager.js +47 -0
- package/dist/lib/tests/gitignore-manager.js.map +1 -0
- package/dist/lib/tests/index.d.ts +6 -0
- package/dist/lib/tests/index.d.ts.map +1 -0
- package/dist/lib/tests/index.js +5 -0
- package/dist/lib/tests/index.js.map +1 -0
- package/dist/lib/tests/sync-missing-files.d.ts +3 -0
- package/dist/lib/tests/sync-missing-files.d.ts.map +1 -0
- package/dist/lib/tests/sync-missing-files.js +65 -0
- package/dist/lib/tests/sync-missing-files.js.map +1 -0
- package/dist/lib/tests/types.d.ts +26 -0
- package/dist/lib/tests/types.d.ts.map +1 -0
- package/dist/lib/tests/types.js +2 -0
- package/dist/lib/tests/types.js.map +1 -0
- package/dist/lib/workflow/build-sample-workflow.d.ts +7 -0
- package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -0
- package/dist/lib/workflow/build-sample-workflow.js +35 -0
- package/dist/lib/workflow/build-sample-workflow.js.map +1 -0
- package/dist/lib/workflow/executor.d.ts +21 -0
- package/dist/lib/workflow/executor.d.ts.map +1 -0
- package/dist/lib/workflow/executor.js +100 -0
- package/dist/lib/workflow/executor.js.map +1 -0
- package/dist/lib/workflow/merge-workflow-into-config.d.ts +7 -0
- package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -0
- package/dist/lib/workflow/merge-workflow-into-config.js +9 -0
- package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -0
- package/dist/lib/workflow/types.d.ts +30 -0
- package/dist/lib/workflow/types.d.ts.map +1 -0
- package/dist/lib/workflow/types.js +25 -0
- package/dist/lib/workflow/types.js.map +1 -0
- package/oclif.manifest.json +856 -1
- package/package.json +9 -4
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable substitution for config values.
|
|
3
|
+
*
|
|
4
|
+
* Supports two patterns:
|
|
5
|
+
* - `${VAR}` — resolves to the value of VAR; throws if VAR is not set
|
|
6
|
+
* - `${VAR:-default}` — resolves to VAR if set, otherwise uses the default value
|
|
7
|
+
*
|
|
8
|
+
* This is consistent with bash variable expansion and with how the workflow
|
|
9
|
+
* engine passes environment variables to `run:` steps via `process.env`.
|
|
10
|
+
* All env vars come from the same source: the shell session's environment.
|
|
11
|
+
*
|
|
12
|
+
* Bare `$` characters and malformed patterns are left as-is.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Regex matching `${VAR}` and `${VAR:-default}` patterns.
|
|
16
|
+
* Captures:
|
|
17
|
+
* [1] = variable name (letters, digits, underscores)
|
|
18
|
+
* [2] = default value (everything after `:-`, may be empty string)
|
|
19
|
+
*/
|
|
20
|
+
const ENV_VAR_PATTERN = /\$\{([A-Za-z_]\w*)(?::-(.*?))?\}/g;
|
|
21
|
+
/**
|
|
22
|
+
* Resolves `${VAR}` and `${VAR:-default}` patterns in a string
|
|
23
|
+
* using `process.env`.
|
|
24
|
+
*
|
|
25
|
+
* - `${VAR}` with no default throws if VAR is not defined in the environment.
|
|
26
|
+
* - `${VAR:-default}` falls back to `default` when VAR is not defined.
|
|
27
|
+
* - Patterns are resolved in a single pass (no nested resolution).
|
|
28
|
+
* - Bare `$` characters and malformed patterns are left unchanged.
|
|
29
|
+
*/
|
|
30
|
+
export const resolveEnvVars = (value) => value.replace(ENV_VAR_PATTERN, (match, varName, defaultValue) => {
|
|
31
|
+
const envValue = process.env[varName];
|
|
32
|
+
if (envValue !== undefined) {
|
|
33
|
+
return envValue;
|
|
34
|
+
}
|
|
35
|
+
if (defaultValue !== undefined) {
|
|
36
|
+
return defaultValue;
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Environment variable "${varName}" is not set and no default was provided. ` +
|
|
39
|
+
`Use \${${varName}:-default_value} to provide a fallback, ` +
|
|
40
|
+
`or set the variable in your shell: export ${varName}=value`);
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Applies `resolveEnvVars` to every value in a string record.
|
|
44
|
+
* Returns a new record with all values resolved.
|
|
45
|
+
*/
|
|
46
|
+
export const resolveEnvVarsInRecord = (record) => Object.fromEntries(Object.entries(record).map(([key, value]) => [key, resolveEnvVars(value)]));
|
|
47
|
+
//# sourceMappingURL=resolve-env-vars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-env-vars.js","sourceRoot":"","sources":["../../../src/lib/config/resolve-env-vars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CACtD,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,YAAgC,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,4CAA4C;QAC5E,UAAU,OAAO,0CAA0C;QAC3D,6CAA6C,OAAO,QAAQ,CAC7D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAwC,EACN,EAAE,CACpC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ComponentOverrides } from '../components/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A component entry in a YAML config file.
|
|
4
|
+
*/
|
|
5
|
+
export interface ConfigComponent {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly overrides?: ComponentOverrides | undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Scaffolding source configuration for test initialization.
|
|
11
|
+
*/
|
|
12
|
+
export interface ScaffoldingConfig {
|
|
13
|
+
readonly repository: string;
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly version: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Test framework configuration metadata.
|
|
19
|
+
*/
|
|
20
|
+
export interface TestsConfig {
|
|
21
|
+
readonly 'jahia-cypress'?: string | undefined;
|
|
22
|
+
readonly scaffolding?: ScaffoldingConfig | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The environment section of the configuration file.
|
|
26
|
+
*/
|
|
27
|
+
export interface EnvironmentConfig {
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly provider: string;
|
|
30
|
+
readonly components: readonly ConfigComponent[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A single step in a workflow.
|
|
34
|
+
* Either `run` (shell command) or `uses` (jahia-cli command) must be provided.
|
|
35
|
+
*/
|
|
36
|
+
export interface WorkflowStep {
|
|
37
|
+
readonly name?: string | undefined;
|
|
38
|
+
readonly run?: string | undefined;
|
|
39
|
+
readonly uses?: string | undefined;
|
|
40
|
+
readonly with?: Readonly<Record<string, string>> | undefined;
|
|
41
|
+
readonly working_dir?: string | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The workflow section of the configuration file.
|
|
45
|
+
*/
|
|
46
|
+
export interface WorkflowConfig {
|
|
47
|
+
readonly steps: readonly WorkflowStep[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The top-level Jahia CLI configuration file structure.
|
|
51
|
+
* Contains `environment`, `tests`, and `workflow` as distinct top-level sections.
|
|
52
|
+
*/
|
|
53
|
+
export interface JahiaCliConfig {
|
|
54
|
+
readonly environment?: EnvironmentConfig | undefined;
|
|
55
|
+
readonly tests?: TestsConfig | undefined;
|
|
56
|
+
readonly workflow?: WorkflowConfig | undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Raw YAML structure before validation (loose types for parsing).
|
|
60
|
+
*/
|
|
61
|
+
export interface RawConfig {
|
|
62
|
+
readonly environment?: unknown;
|
|
63
|
+
readonly tests?: unknown;
|
|
64
|
+
readonly workflow?: unknown;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Raw environment section before validation.
|
|
68
|
+
*/
|
|
69
|
+
export interface RawEnvironmentConfig {
|
|
70
|
+
readonly name?: unknown;
|
|
71
|
+
readonly provider?: unknown;
|
|
72
|
+
readonly components?: unknown;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JahiaCliConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a config enriched with the jahia-cypress tests version metadata.
|
|
4
|
+
*/
|
|
5
|
+
export declare const withTestsVersion: (config: JahiaCliConfig, version: string) => JahiaCliConfig;
|
|
6
|
+
//# sourceMappingURL=with-tests-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-tests-version.d.ts","sourceRoot":"","sources":["../../../src/lib/config/with-tests-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,cAAc,EAAE,SAAS,MAAM,KAAG,cAMzE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a config enriched with the jahia-cypress tests version metadata.
|
|
3
|
+
*/
|
|
4
|
+
export const withTestsVersion = (config, version) => ({
|
|
5
|
+
...config,
|
|
6
|
+
tests: {
|
|
7
|
+
...(config.tests ?? {}),
|
|
8
|
+
'jahia-cypress': version,
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=with-tests-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-tests-version.js","sourceRoot":"","sources":["../../../src/lib/config/with-tests-version.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAsB,EAAE,OAAe,EAAkB,EAAE,CAAC,CAAC;IAC5F,GAAG,MAAM;IACT,KAAK,EAAE;QACL,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACvB,eAAe,EAAE,OAAO;KACzB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CreateResult, HealthCheckResult } from '../providers/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Formats a create result for human-readable terminal output.
|
|
4
|
+
*/
|
|
5
|
+
export declare const formatCreateResultHuman: (result: CreateResult) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Formats a create result as structured JSON for AI agent consumption.
|
|
8
|
+
* Includes stateFile path when provided.
|
|
9
|
+
*/
|
|
10
|
+
export declare const formatCreateResultJson: (result: CreateResult, stateFile?: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Formats a health check result for human-readable terminal output.
|
|
13
|
+
*/
|
|
14
|
+
export declare const formatHealthCheckHuman: (result: HealthCheckResult) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Formats a health check result as structured JSON for AI agent consumption.
|
|
17
|
+
* Includes stateFile path when provided.
|
|
18
|
+
*/
|
|
19
|
+
export declare const formatHealthCheckJson: (result: HealthCheckResult, stateFile?: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Formats a list of reconciled components for human-readable terminal output.
|
|
22
|
+
* Used by the `environment list` command.
|
|
23
|
+
*/
|
|
24
|
+
export declare const formatEnvironmentListHuman: (params: {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly provider: string;
|
|
27
|
+
readonly network: string;
|
|
28
|
+
readonly createdAt: string;
|
|
29
|
+
readonly status: string;
|
|
30
|
+
readonly components: readonly {
|
|
31
|
+
readonly name: string;
|
|
32
|
+
readonly image: string;
|
|
33
|
+
readonly tag: string;
|
|
34
|
+
readonly containerId: string;
|
|
35
|
+
readonly liveStatus: string;
|
|
36
|
+
}[];
|
|
37
|
+
}) => string;
|
|
38
|
+
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/lib/output/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA+E9F;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,YAAY,KAAG,MAiD9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,YAAY,EAAE,YAAY,MAAM,KAAG,MAsBjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,iBAAiB,KAAG,MAwBlE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,iBAAiB,EAAE,YAAY,MAAM,KAAG,MAUnF,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;CACL,KAAG,MAmBH,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimum column widths (headers set the floor).
|
|
3
|
+
*/
|
|
4
|
+
const MIN_COL = {
|
|
5
|
+
id: 'Container ID'.length,
|
|
6
|
+
name: 'Name'.length,
|
|
7
|
+
type: 'Type'.length,
|
|
8
|
+
version: 'Image'.length,
|
|
9
|
+
status: 'Status'.length,
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Computes column widths from the data, ensuring headers always fit.
|
|
13
|
+
*/
|
|
14
|
+
const computeColumnWidths = (rows) => ({
|
|
15
|
+
id: Math.max(MIN_COL.id, ...rows.map((r) => r.containerId.length)) + 2,
|
|
16
|
+
name: Math.max(MIN_COL.name, ...rows.map((r) => r.name.length)) + 2,
|
|
17
|
+
type: Math.max(MIN_COL.type, ...rows.map((r) => r.type.length)) + 2,
|
|
18
|
+
version: Math.max(MIN_COL.version, ...rows.map((r) => r.version.length)) + 2,
|
|
19
|
+
status: Math.max(MIN_COL.status, ...rows.map((r) => r.status.length)) + 2,
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Renders a component table with a consistent base layout.
|
|
23
|
+
* Column widths are computed dynamically from the data.
|
|
24
|
+
* An optional extra column (e.g., "Health", "Port(s)") can be appended.
|
|
25
|
+
*/
|
|
26
|
+
const renderComponentTable = (rows, extraHeader) => {
|
|
27
|
+
const col = computeColumnWidths(rows);
|
|
28
|
+
const header = ` ${'Container ID'.padEnd(col.id)} ${'Name'.padEnd(col.name)} ${'Type'.padEnd(col.type)} ${'Image'.padEnd(col.version)} ${'Status'.padEnd(col.status)}` +
|
|
29
|
+
(extraHeader ? ` ${extraHeader}` : '');
|
|
30
|
+
const separator = ` ${'─'.repeat(col.id + col.name + col.type + col.version + col.status + 4 + (extraHeader ? extraHeader.length + 1 : 0))}`;
|
|
31
|
+
const dataRows = rows.map((r) => {
|
|
32
|
+
const base = ` ${r.containerId.padEnd(col.id)} ${r.name.padEnd(col.name)} ${r.type.padEnd(col.type)} ${r.version.padEnd(col.version)} ${r.status.padEnd(col.status)}`;
|
|
33
|
+
return r.extra ? `${base} ${r.extra}` : base;
|
|
34
|
+
});
|
|
35
|
+
return [header, separator, ...dataRows];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Converts a ComponentStatus to a display row for the shared table.
|
|
39
|
+
* The version column shows the full Docker image reference (image:tag).
|
|
40
|
+
*/
|
|
41
|
+
const statusToRow = (comp, extra) => ({
|
|
42
|
+
containerId: comp.containerId ?? '-',
|
|
43
|
+
name: comp.name,
|
|
44
|
+
type: comp.category ?? '-',
|
|
45
|
+
version: comp.image && comp.tag ? `${comp.image}:${comp.tag}` : comp.tag ?? '-',
|
|
46
|
+
status: comp.status,
|
|
47
|
+
extra,
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* Formats a create result for human-readable terminal output.
|
|
51
|
+
*/
|
|
52
|
+
export const formatCreateResultHuman = (result) => {
|
|
53
|
+
const lines = [];
|
|
54
|
+
if (result.success) {
|
|
55
|
+
lines.push(`✓ Environment "${result.environment.name}" created successfully`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
lines.push(`✗ Environment "${result.environment.name}" creation failed`);
|
|
59
|
+
}
|
|
60
|
+
lines.push('');
|
|
61
|
+
const rows = result.environment.components.map((comp) => {
|
|
62
|
+
const ports = comp.ports
|
|
63
|
+
? Object.entries(comp.ports)
|
|
64
|
+
.map(([k, v]) => `${k}→${String(v)}`)
|
|
65
|
+
.join(', ')
|
|
66
|
+
: '-';
|
|
67
|
+
return statusToRow(comp, ports);
|
|
68
|
+
});
|
|
69
|
+
lines.push(...renderComponentTable(rows, 'Port(s)'));
|
|
70
|
+
lines.push('');
|
|
71
|
+
lines.push(` Network: ${result.environment.network}`);
|
|
72
|
+
lines.push(` Provider: ${result.environment.provider}`);
|
|
73
|
+
if (result.success) {
|
|
74
|
+
const jahiaComp = result.environment.components.find((c) => c.name === 'jahia');
|
|
75
|
+
const vlComp = result.environment.components.find((c) => c.name === 'victorialogs');
|
|
76
|
+
const jahiaPort = jahiaComp?.ports?.['8080'] ?? 8080;
|
|
77
|
+
const logsPort = vlComp?.ports?.['9428'] ?? 9428;
|
|
78
|
+
lines.push('');
|
|
79
|
+
lines.push(' Endpoints:');
|
|
80
|
+
lines.push(` Jahia: http://localhost:${String(jahiaPort)}`);
|
|
81
|
+
lines.push(` Logs API: http://localhost:${String(logsPort)}`);
|
|
82
|
+
lines.push('');
|
|
83
|
+
lines.push(` Query logs: curl 'http://localhost:${String(logsPort)}/select/logsql/query?query=*&limit=100'`);
|
|
84
|
+
}
|
|
85
|
+
if (result.errors.length > 0) {
|
|
86
|
+
lines.push('');
|
|
87
|
+
lines.push(' Errors:');
|
|
88
|
+
result.errors.forEach((err) => {
|
|
89
|
+
lines.push(` • ${err}`);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return lines.join('\n');
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Formats a create result as structured JSON for AI agent consumption.
|
|
96
|
+
* Includes stateFile path when provided.
|
|
97
|
+
*/
|
|
98
|
+
export const formatCreateResultJson = (result, stateFile) => {
|
|
99
|
+
const jahiaComp = result.environment.components.find((c) => c.name === 'jahia');
|
|
100
|
+
const vlComp = result.environment.components.find((c) => c.name === 'victorialogs');
|
|
101
|
+
const jahiaPort = jahiaComp?.ports?.['8080'] ?? 8080;
|
|
102
|
+
const logsPort = vlComp?.ports?.['9428'] ?? 9428;
|
|
103
|
+
return JSON.stringify({
|
|
104
|
+
status: result.success ? 'success' : 'error',
|
|
105
|
+
environment: result.environment,
|
|
106
|
+
endpoints: result.success
|
|
107
|
+
? {
|
|
108
|
+
jahia: `http://localhost:${String(jahiaPort)}`,
|
|
109
|
+
logsApi: `http://localhost:${String(logsPort)}`,
|
|
110
|
+
logsQuery: `http://localhost:${String(logsPort)}/select/logsql/query?query=*&limit=100`,
|
|
111
|
+
}
|
|
112
|
+
: undefined,
|
|
113
|
+
errors: result.errors,
|
|
114
|
+
...(stateFile !== undefined ? { stateFile } : {}),
|
|
115
|
+
}, null, 2);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Formats a health check result for human-readable terminal output.
|
|
119
|
+
*/
|
|
120
|
+
export const formatHealthCheckHuman = (result) => {
|
|
121
|
+
const lines = [];
|
|
122
|
+
if (result.success) {
|
|
123
|
+
lines.push(`✓ Environment "${result.environment.name}" is healthy`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
lines.push(`✗ Environment "${result.environment.name}" has issues`);
|
|
127
|
+
}
|
|
128
|
+
lines.push('');
|
|
129
|
+
const rows = result.environment.components.map((comp) => {
|
|
130
|
+
const check = result.checks.find((c) => c.name === comp.name);
|
|
131
|
+
const icon = check?.passed ? '✓' : '✗';
|
|
132
|
+
const healthMsg = check?.message ?? '-';
|
|
133
|
+
return statusToRow(comp, `${icon} ${healthMsg}`);
|
|
134
|
+
});
|
|
135
|
+
lines.push(...renderComponentTable(rows, 'Health'));
|
|
136
|
+
lines.push('');
|
|
137
|
+
lines.push(` Network: ${result.environment.network}`);
|
|
138
|
+
lines.push(` Provider: ${result.environment.provider}`);
|
|
139
|
+
return lines.join('\n');
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Formats a health check result as structured JSON for AI agent consumption.
|
|
143
|
+
* Includes stateFile path when provided.
|
|
144
|
+
*/
|
|
145
|
+
export const formatHealthCheckJson = (result, stateFile) => JSON.stringify({
|
|
146
|
+
status: result.success ? 'healthy' : 'unhealthy',
|
|
147
|
+
environment: result.environment,
|
|
148
|
+
checks: result.checks,
|
|
149
|
+
...(stateFile !== undefined ? { stateFile } : {}),
|
|
150
|
+
}, null, 2);
|
|
151
|
+
/**
|
|
152
|
+
* Formats a list of reconciled components for human-readable terminal output.
|
|
153
|
+
* Used by the `environment list` command.
|
|
154
|
+
*/
|
|
155
|
+
export const formatEnvironmentListHuman = (params) => {
|
|
156
|
+
const lines = [];
|
|
157
|
+
lines.push(`Environment: ${params.name} (${params.status})`);
|
|
158
|
+
lines.push(`Provider: ${params.provider}`);
|
|
159
|
+
lines.push(`Network: ${params.network}`);
|
|
160
|
+
lines.push(`Created: ${params.createdAt}`);
|
|
161
|
+
lines.push('');
|
|
162
|
+
const rows = params.components.map((c) => ({
|
|
163
|
+
containerId: c.containerId.slice(0, 12),
|
|
164
|
+
name: c.name,
|
|
165
|
+
type: c.image,
|
|
166
|
+
version: `${c.image}:${c.tag}`,
|
|
167
|
+
status: c.liveStatus,
|
|
168
|
+
}));
|
|
169
|
+
lines.push(...renderComponentTable(rows));
|
|
170
|
+
return lines.join('\n');
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/lib/output/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { HealthcheckConfig, PortMapping, VolumeMount } from '../../components/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for Docker container log driver.
|
|
4
|
+
*/
|
|
5
|
+
export interface LogDriverConfig {
|
|
6
|
+
readonly driver: string;
|
|
7
|
+
readonly options: Readonly<Record<string, string>>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generates a container name scoped to an environment.
|
|
11
|
+
*/
|
|
12
|
+
export declare const containerName: (envName: string, componentName: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Builds the `docker run` argument list for a container.
|
|
15
|
+
* This is a pure function for easy testing.
|
|
16
|
+
*/
|
|
17
|
+
export declare const buildRunArgs: (params: {
|
|
18
|
+
readonly envName: string;
|
|
19
|
+
readonly componentName: string;
|
|
20
|
+
readonly image: string;
|
|
21
|
+
readonly tag: string;
|
|
22
|
+
readonly networkName: string;
|
|
23
|
+
readonly ports: readonly PortMapping[];
|
|
24
|
+
readonly env: Readonly<Record<string, string>>;
|
|
25
|
+
readonly volumes: readonly VolumeMount[];
|
|
26
|
+
readonly networkAliases: readonly string[];
|
|
27
|
+
readonly healthcheck?: HealthcheckConfig | undefined;
|
|
28
|
+
readonly logConfig?: LogDriverConfig | undefined;
|
|
29
|
+
readonly containerArgs?: readonly string[] | undefined;
|
|
30
|
+
}) => readonly string[];
|
|
31
|
+
/**
|
|
32
|
+
* Starts a container using `docker run`.
|
|
33
|
+
* Returns the container ID.
|
|
34
|
+
*/
|
|
35
|
+
export declare const runContainer: (params: {
|
|
36
|
+
readonly envName: string;
|
|
37
|
+
readonly componentName: string;
|
|
38
|
+
readonly image: string;
|
|
39
|
+
readonly tag: string;
|
|
40
|
+
readonly networkName: string;
|
|
41
|
+
readonly ports: readonly PortMapping[];
|
|
42
|
+
readonly env: Readonly<Record<string, string>>;
|
|
43
|
+
readonly volumes: readonly VolumeMount[];
|
|
44
|
+
readonly networkAliases: readonly string[];
|
|
45
|
+
readonly healthcheck?: HealthcheckConfig | undefined;
|
|
46
|
+
readonly logConfig?: LogDriverConfig | undefined;
|
|
47
|
+
readonly containerArgs?: readonly string[] | undefined;
|
|
48
|
+
}) => Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* Inspects a container and returns its status.
|
|
51
|
+
*/
|
|
52
|
+
export declare const inspectContainer: (name: string) => Promise<{
|
|
53
|
+
running: boolean;
|
|
54
|
+
health: string;
|
|
55
|
+
id: string;
|
|
56
|
+
} | undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* Stops and removes a container.
|
|
59
|
+
*/
|
|
60
|
+
export declare const removeContainer: (name: string) => Promise<void>;
|
|
61
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAC9B,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD,KAAG,SAAS,MAAM,EA6DlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,QAAQ;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD,KAAG,OAAO,CAAC,MAAM,CAIjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,KACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAiBtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAMhE,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { volumeName } from './volume.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
/**
|
|
6
|
+
* Generates a container name scoped to an environment.
|
|
7
|
+
*/
|
|
8
|
+
export const containerName = (envName, componentName) => `jahia-cli-${envName}-${componentName}`;
|
|
9
|
+
/**
|
|
10
|
+
* Builds the `docker run` argument list for a container.
|
|
11
|
+
* This is a pure function for easy testing.
|
|
12
|
+
*/
|
|
13
|
+
export const buildRunArgs = (params) => {
|
|
14
|
+
const args = ['run', '-d', '--name', containerName(params.envName, params.componentName)];
|
|
15
|
+
// Network
|
|
16
|
+
args.push('--network', params.networkName);
|
|
17
|
+
// Network aliases
|
|
18
|
+
params.networkAliases.forEach((alias) => {
|
|
19
|
+
args.push('--network-alias', alias);
|
|
20
|
+
});
|
|
21
|
+
// Ports
|
|
22
|
+
params.ports.forEach((port) => {
|
|
23
|
+
const proto = port.protocol ?? 'tcp';
|
|
24
|
+
args.push('-p', `${String(port.host)}:${String(port.container)}/${proto}`);
|
|
25
|
+
});
|
|
26
|
+
// Environment variables
|
|
27
|
+
Object.entries(params.env).forEach(([key, value]) => {
|
|
28
|
+
args.push('-e', `${key}=${value}`);
|
|
29
|
+
});
|
|
30
|
+
// Volumes
|
|
31
|
+
params.volumes.forEach((vol) => {
|
|
32
|
+
const vName = volumeName(params.envName, vol.name);
|
|
33
|
+
args.push('-v', `${vName}:${vol.containerPath}`);
|
|
34
|
+
});
|
|
35
|
+
// Healthcheck
|
|
36
|
+
if (params.healthcheck) {
|
|
37
|
+
const hc = params.healthcheck;
|
|
38
|
+
// Docker's --health-cmd implies CMD-SHELL, so strip it if present
|
|
39
|
+
const cmdParts = hc.command[0] === 'CMD-SHELL' ? hc.command.slice(1) : hc.command;
|
|
40
|
+
args.push('--health-cmd', cmdParts.join(' '), '--health-interval', `${String(hc.intervalSeconds)}s`, '--health-timeout', `${String(hc.timeoutSeconds)}s`, '--health-retries', String(hc.retries), '--health-start-period', `${String(hc.startPeriodSeconds)}s`);
|
|
41
|
+
}
|
|
42
|
+
// Log driver
|
|
43
|
+
if (params.logConfig) {
|
|
44
|
+
args.push('--log-driver', params.logConfig.driver);
|
|
45
|
+
Object.entries(params.logConfig.options).forEach(([key, value]) => {
|
|
46
|
+
args.push('--log-opt', `${key}=${value}`);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Image
|
|
50
|
+
args.push(`${params.image}:${params.tag}`);
|
|
51
|
+
// Container arguments (appended after the image)
|
|
52
|
+
if (params.containerArgs) {
|
|
53
|
+
params.containerArgs.forEach((arg) => {
|
|
54
|
+
args.push(arg);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return args;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Starts a container using `docker run`.
|
|
61
|
+
* Returns the container ID.
|
|
62
|
+
*/
|
|
63
|
+
export const runContainer = async (params) => {
|
|
64
|
+
const args = buildRunArgs(params);
|
|
65
|
+
const { stdout } = await execFileAsync('docker', [...args]);
|
|
66
|
+
return stdout.trim();
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Inspects a container and returns its status.
|
|
70
|
+
*/
|
|
71
|
+
export const inspectContainer = async (name) => {
|
|
72
|
+
try {
|
|
73
|
+
const { stdout } = await execFileAsync('docker', [
|
|
74
|
+
'inspect',
|
|
75
|
+
'--format',
|
|
76
|
+
'{{.State.Running}}|{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}|{{.Id}}',
|
|
77
|
+
name,
|
|
78
|
+
]);
|
|
79
|
+
const parts = stdout.trim().split('|');
|
|
80
|
+
return {
|
|
81
|
+
running: parts[0] === 'true',
|
|
82
|
+
health: parts[1] ?? 'none',
|
|
83
|
+
id: parts[2] ?? '',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Stops and removes a container.
|
|
92
|
+
*/
|
|
93
|
+
export const removeContainer = async (name) => {
|
|
94
|
+
try {
|
|
95
|
+
await execFileAsync('docker', ['rm', '-f', name]);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Container may not exist, that's fine
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-container-logs.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/docker/get-container-logs.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,eAAe,MAAM,EACrB,aAAU,KACT,OAAO,CAAC,MAAM,CAShB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves logs from a Docker container (snapshot mode).
|
|
6
|
+
*/
|
|
7
|
+
export const getContainerLogs = async (containerName, tail = 100) => {
|
|
8
|
+
const { stdout, stderr } = await execFileAsync('docker', [
|
|
9
|
+
'logs',
|
|
10
|
+
'--tail',
|
|
11
|
+
String(tail),
|
|
12
|
+
containerName,
|
|
13
|
+
]);
|
|
14
|
+
// Docker logs may output to stderr for some containers
|
|
15
|
+
return stdout + stderr;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=get-container-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-container-logs.js","sourceRoot":"","sources":["../../../../src/lib/providers/docker/get-container-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,aAAqB,EACrB,IAAI,GAAG,GAAG,EACO,EAAE;IACnB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE;QACvD,MAAM;QACN,QAAQ;QACR,MAAM,CAAC,IAAI,CAAC;QACZ,aAAa;KACd,CAAC,CAAC;IACH,uDAAuD;IACvD,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Provider } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Docker provider implementation.
|
|
4
|
+
* Manages environments using native Docker CLI commands.
|
|
5
|
+
* Automatically injects transparent infrastructure (VictoriaLogs) into every environment.
|
|
6
|
+
*/
|
|
7
|
+
export declare const dockerProvider: Provider;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/docker/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAMV,QAAQ,EAGT,MAAM,aAAa,CAAC;AAsPrB;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,QAkP5B,CAAC"}
|