@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.
- 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 +68 -0
- package/dist/commands/jahia/provision.d.ts.map +1 -0
- package/dist/commands/jahia/provision.js +352 -0
- package/dist/commands/jahia/provision.js.map +1 -0
- package/dist/commands/tests/artifacts.d.ts +25 -0
- package/dist/commands/tests/artifacts.d.ts.map +1 -0
- package/dist/commands/tests/artifacts.js +112 -0
- package/dist/commands/tests/artifacts.js.map +1 -0
- package/dist/commands/tests/build.d.ts +30 -0
- package/dist/commands/tests/build.d.ts.map +1 -0
- package/dist/commands/tests/build.js +90 -0
- package/dist/commands/tests/build.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/tests/run.d.ts +28 -0
- package/dist/commands/tests/run.d.ts.map +1 -0
- package/dist/commands/tests/run.js +166 -0
- package/dist/commands/tests/run.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 +84 -0
- package/dist/commands/workflow/init.js.map +1 -0
- package/dist/commands/workflow/run.d.ts +22 -0
- package/dist/commands/workflow/run.d.ts.map +1 -0
- package/dist/commands/workflow/run.js +111 -0
- package/dist/commands/workflow/run.js.map +1 -0
- package/dist/lib/artifacts/collect-all.d.ts +17 -0
- package/dist/lib/artifacts/collect-all.d.ts.map +1 -0
- package/dist/lib/artifacts/collect-all.js +107 -0
- package/dist/lib/artifacts/collect-all.js.map +1 -0
- package/dist/lib/artifacts/copy-container-artifacts.d.ts +13 -0
- package/dist/lib/artifacts/copy-container-artifacts.d.ts.map +1 -0
- package/dist/lib/artifacts/copy-container-artifacts.js +48 -0
- package/dist/lib/artifacts/copy-container-artifacts.js.map +1 -0
- package/dist/lib/artifacts/fetch-container-logs.d.ts +17 -0
- package/dist/lib/artifacts/fetch-container-logs.d.ts.map +1 -0
- package/dist/lib/artifacts/fetch-container-logs.js +36 -0
- package/dist/lib/artifacts/fetch-container-logs.js.map +1 -0
- package/dist/lib/artifacts/index.d.ts +6 -0
- package/dist/lib/artifacts/index.d.ts.map +1 -0
- package/dist/lib/artifacts/index.js +5 -0
- package/dist/lib/artifacts/index.js.map +1 -0
- package/dist/lib/artifacts/query-vlogs.d.ts +14 -0
- package/dist/lib/artifacts/query-vlogs.d.ts.map +1 -0
- package/dist/lib/artifacts/query-vlogs.js +33 -0
- package/dist/lib/artifacts/query-vlogs.js.map +1 -0
- package/dist/lib/artifacts/types.d.ts +28 -0
- package/dist/lib/artifacts/types.d.ts.map +1 -0
- package/dist/lib/artifacts/types.js +2 -0
- package/dist/lib/artifacts/types.js.map +1 -0
- package/dist/lib/components/cypress.d.ts +16 -0
- package/dist/lib/components/cypress.d.ts.map +1 -0
- package/dist/lib/components/cypress.js +35 -0
- package/dist/lib/components/cypress.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 +114 -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 +38 -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 +30 -0
- package/dist/lib/components/smtp-server.js.map +1 -0
- package/dist/lib/components/types.d.ts +101 -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 +87 -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 +37 -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 +59 -0
- package/dist/lib/config/parser.d.ts.map +1 -0
- package/dist/lib/config/parser.js +281 -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 +120 -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 +63 -0
- package/dist/lib/providers/docker/container.d.ts.map +1 -0
- package/dist/lib/providers/docker/container.js +105 -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/filter-files.d.ts +7 -0
- package/dist/lib/provisioning/filter-files.d.ts.map +1 -0
- package/dist/lib/provisioning/filter-files.js +14 -0
- package/dist/lib/provisioning/filter-files.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-file-action.d.ts +29 -0
- package/dist/lib/provisioning/submit-file-action.d.ts.map +1 -0
- package/dist/lib/provisioning/submit-file-action.js +75 -0
- package/dist/lib/provisioning/submit-file-action.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 +45 -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/build-image.d.ts +33 -0
- package/dist/lib/tests/build-image.d.ts.map +1 -0
- package/dist/lib/tests/build-image.js +59 -0
- package/dist/lib/tests/build-image.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 +8 -0
- package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -0
- package/dist/lib/workflow/build-sample-workflow.js +39 -0
- package/dist/lib/workflow/build-sample-workflow.js.map +1 -0
- package/dist/lib/workflow/executor.d.ts +23 -0
- package/dist/lib/workflow/executor.d.ts.map +1 -0
- package/dist/lib/workflow/executor.js +129 -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/resolve-workflow.d.ts +20 -0
- package/dist/lib/workflow/resolve-workflow.d.ts.map +1 -0
- package/dist/lib/workflow/resolve-workflow.js +38 -0
- package/dist/lib/workflow/resolve-workflow.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 +1057 -1
- package/package.json +11 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { resolveEnvVars } from '../config/resolve-env-vars.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default Dockerfile path relative to the working directory.
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_DOCKERFILE = 'docker/Dockerfile.local';
|
|
6
|
+
/**
|
|
7
|
+
* Default image name prefix for built test images.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_IMAGE_NAME = 'jahia-tests';
|
|
10
|
+
/**
|
|
11
|
+
* Resolves the image tag for the test image build.
|
|
12
|
+
* Uses the scaffolding version from config, with env var substitution.
|
|
13
|
+
*/
|
|
14
|
+
export const resolveImageTag = (imageName, version) => `${imageName}:${version}`;
|
|
15
|
+
/**
|
|
16
|
+
* Parses a repeatable `KEY=VALUE` flag into a record.
|
|
17
|
+
* Applies `${VAR:-default}` env var resolution to values for consistency
|
|
18
|
+
* with the config system.
|
|
19
|
+
*/
|
|
20
|
+
export const parseKeyValueArgs = (args) => Object.fromEntries(args.map((arg) => {
|
|
21
|
+
const eqIndex = arg.indexOf('=');
|
|
22
|
+
if (eqIndex === -1) {
|
|
23
|
+
throw new Error(`Invalid KEY=VALUE argument: "${arg}". Expected format: KEY=VALUE`);
|
|
24
|
+
}
|
|
25
|
+
return [arg.slice(0, eqIndex), resolveEnvVars(arg.slice(eqIndex + 1))];
|
|
26
|
+
}));
|
|
27
|
+
/**
|
|
28
|
+
* Builds the argument list for `docker buildx build`.
|
|
29
|
+
*
|
|
30
|
+
* Pure function — all inputs explicit, no side effects.
|
|
31
|
+
*/
|
|
32
|
+
export const buildBuildxArgs = (params) => {
|
|
33
|
+
const args = [
|
|
34
|
+
'buildx', 'build',
|
|
35
|
+
'-f', params.dockerfile,
|
|
36
|
+
'-t', params.tag,
|
|
37
|
+
'--build-arg', `BASE_VERSION=${params.baseVersion}`,
|
|
38
|
+
];
|
|
39
|
+
if (params.extraBuildArgs !== undefined) {
|
|
40
|
+
Object.entries(params.extraBuildArgs).forEach(([key, value]) => {
|
|
41
|
+
args.push('--build-arg', `${key}=${value}`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
if (params.platform !== undefined) {
|
|
45
|
+
args.push('--platform', params.platform);
|
|
46
|
+
}
|
|
47
|
+
if (params.noCache === true) {
|
|
48
|
+
args.push('--no-cache');
|
|
49
|
+
}
|
|
50
|
+
// --load makes the image available in the local Docker daemon
|
|
51
|
+
args.push('--load');
|
|
52
|
+
// Build context is the directory containing the Dockerfile
|
|
53
|
+
const contextDir = params.dockerfile.includes('/')
|
|
54
|
+
? params.dockerfile.slice(0, params.dockerfile.lastIndexOf('/'))
|
|
55
|
+
: '.';
|
|
56
|
+
args.push(contextDir);
|
|
57
|
+
return args;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=build-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-image.js","sourceRoot":"","sources":["../../../src/lib/tests/build-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAAiB,EACjB,OAAe,EACP,EAAE,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAuB,EACW,EAAE,CACpC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,+BAA+B,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC,CACH,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAO/B,EAAqB,EAAE;IACtB,MAAM,IAAI,GAAa;QACrB,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,IAAI,EAAE,MAAM,CAAC,GAAG;QAChB,aAAa,EAAE,gBAAgB,MAAM,CAAC,WAAW,EAAE;KACpD,CAAC;IAEF,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpB,2DAA2D;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC,CAAC,GAAG,CAAC;IACR,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ScaffoldingCloneResult } from './types.js';
|
|
2
|
+
export declare const DEFAULT_CYPRESS_REPOSITORY = "https://github.com/Jahia/jahia-cypress.git";
|
|
3
|
+
export declare const buildCloneArgs: (params: {
|
|
4
|
+
readonly version: string;
|
|
5
|
+
readonly repositoryUrl: string;
|
|
6
|
+
readonly checkoutDir: string;
|
|
7
|
+
}) => readonly string[];
|
|
8
|
+
export declare const parseLatestTagFromLsRemote: (stdout: string, repositoryUrl: string) => string;
|
|
9
|
+
export declare const resolveLatestTag: (repositoryUrl?: string) => Promise<string>;
|
|
10
|
+
export declare const cloneScaffolding: (params: {
|
|
11
|
+
readonly version?: string | undefined;
|
|
12
|
+
readonly workDir: string;
|
|
13
|
+
readonly repositoryUrl?: string | undefined;
|
|
14
|
+
readonly scaffoldingPath?: string | undefined;
|
|
15
|
+
}) => Promise<ScaffoldingCloneResult>;
|
|
16
|
+
//# sourceMappingURL=clone-scaffolding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-scaffolding.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/clone-scaffolding.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,0BAA0B,+CAA+C,CAAC;AAMvF,eAAO,MAAM,cAAc,GAAI,QAAQ;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,KAAG,SAAS,MAAM,EAQlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,EAAE,eAAe,MAAM,KAAG,MAgBlF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,gBAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,CAW7E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,QAAQ;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C,KAAG,OAAO,CAAC,sBAAsB,CAyBjC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { access, mkdir } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
export const DEFAULT_CYPRESS_REPOSITORY = 'https://github.com/Jahia/jahia-cypress.git';
|
|
6
|
+
const DEFAULT_CHECKOUT_DIRNAME = 'jahia-cypress';
|
|
7
|
+
const TAG_PREFIX = 'refs/tags/';
|
|
8
|
+
const execFileAsync = promisify(execFile);
|
|
9
|
+
export const buildCloneArgs = (params) => [
|
|
10
|
+
'clone',
|
|
11
|
+
'--depth',
|
|
12
|
+
'1',
|
|
13
|
+
'--branch',
|
|
14
|
+
params.version,
|
|
15
|
+
params.repositoryUrl,
|
|
16
|
+
params.checkoutDir,
|
|
17
|
+
];
|
|
18
|
+
export const parseLatestTagFromLsRemote = (stdout, repositoryUrl) => {
|
|
19
|
+
const firstLine = stdout
|
|
20
|
+
.split('\n')
|
|
21
|
+
.map((line) => line.trim())
|
|
22
|
+
.find((line) => line.length > 0);
|
|
23
|
+
if (!firstLine) {
|
|
24
|
+
throw new Error(`No tags found for ${repositoryUrl}.`);
|
|
25
|
+
}
|
|
26
|
+
const ref = firstLine.split(/\s+/)[1];
|
|
27
|
+
if (!ref?.startsWith(TAG_PREFIX)) {
|
|
28
|
+
throw new Error(`Unable to resolve latest tag from git output for ${repositoryUrl}.`);
|
|
29
|
+
}
|
|
30
|
+
return ref.slice(TAG_PREFIX.length);
|
|
31
|
+
};
|
|
32
|
+
export const resolveLatestTag = async (repositoryUrl) => {
|
|
33
|
+
const url = repositoryUrl ?? DEFAULT_CYPRESS_REPOSITORY;
|
|
34
|
+
const { stdout } = await execFileAsync('git', [
|
|
35
|
+
'ls-remote',
|
|
36
|
+
'--tags',
|
|
37
|
+
'--refs',
|
|
38
|
+
'--sort=-v:refname',
|
|
39
|
+
url,
|
|
40
|
+
]);
|
|
41
|
+
return parseLatestTagFromLsRemote(stdout, url);
|
|
42
|
+
};
|
|
43
|
+
export const cloneScaffolding = async (params) => {
|
|
44
|
+
const repositoryUrl = params.repositoryUrl ?? DEFAULT_CYPRESS_REPOSITORY;
|
|
45
|
+
const version = params.version ?? (await resolveLatestTag(repositoryUrl));
|
|
46
|
+
const checkoutDir = join(params.workDir, DEFAULT_CHECKOUT_DIRNAME);
|
|
47
|
+
const subPath = params.scaffoldingPath ?? 'scaffolding';
|
|
48
|
+
const scaffoldingDir = join(checkoutDir, subPath);
|
|
49
|
+
await mkdir(params.workDir, { recursive: true });
|
|
50
|
+
await execFileAsync('git', [...buildCloneArgs({ version, repositoryUrl, checkoutDir })], {
|
|
51
|
+
cwd: params.workDir,
|
|
52
|
+
});
|
|
53
|
+
await access(scaffoldingDir).catch((error) => {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
throw new Error(`Scaffolding directory not found at "${scaffoldingDir}" after cloning ${repositoryUrl}@${version}: ${message}`);
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
version,
|
|
59
|
+
repositoryUrl,
|
|
60
|
+
checkoutDir,
|
|
61
|
+
scaffoldingDir,
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=clone-scaffolding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-scaffolding.js","sourceRoot":"","sources":["../../../src/lib/tests/clone-scaffolding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Files and patterns that should never be synced from the remote scaffolding.
|
|
3
|
+
* These are files that could alter local git behavior or conflict with local config.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_EXCLUSION_PATTERNS: readonly string[];
|
|
6
|
+
/**
|
|
7
|
+
* Returns true if the given relative path should be excluded from sync.
|
|
8
|
+
* Checks if the filename (last segment) matches any exclusion pattern.
|
|
9
|
+
*/
|
|
10
|
+
export declare const isExcluded: (relativePath: string, exclusionPatterns?: readonly string[]) => boolean;
|
|
11
|
+
//# sourceMappingURL=exclusion-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exclusion-list.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/exclusion-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,cAAc,MAAM,EACpB,oBAAmB,SAAS,MAAM,EAA+B,KAChE,OAKC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Files and patterns that should never be synced from the remote scaffolding.
|
|
3
|
+
* These are files that could alter local git behavior or conflict with local config.
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_EXCLUSION_PATTERNS = [
|
|
6
|
+
'.gitignore',
|
|
7
|
+
'.gitattributes',
|
|
8
|
+
'.gitmodules',
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* Returns true if the given relative path should be excluded from sync.
|
|
12
|
+
* Checks if the filename (last segment) matches any exclusion pattern.
|
|
13
|
+
*/
|
|
14
|
+
export const isExcluded = (relativePath, exclusionPatterns = DEFAULT_EXCLUSION_PATTERNS) => exclusionPatterns.some((pattern) => {
|
|
15
|
+
const segments = relativePath.split('/');
|
|
16
|
+
const fileName = segments[segments.length - 1] ?? '';
|
|
17
|
+
return fileName === pattern;
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=exclusion-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exclusion-list.js","sourceRoot":"","sources":["../../../src/lib/tests/exclusion-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,YAAY;IACZ,gBAAgB;IAChB,aAAa;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,YAAoB,EACpB,oBAAuC,0BAA0B,EACxD,EAAE,CACX,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,QAAQ,KAAK,OAAO,CAAC;AAC9B,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface GitignoreUpdateResult {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly entriesAdded: number;
|
|
4
|
+
readonly created: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Builds the managed section content from a list of file paths.
|
|
8
|
+
*/
|
|
9
|
+
export declare const buildManagedSection: (entries: readonly string[]) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Replaces or appends the managed section in existing gitignore content.
|
|
12
|
+
* Preserves all user-owned content outside the markers.
|
|
13
|
+
*/
|
|
14
|
+
export declare const replaceManagedSection: (existingContent: string, entries: readonly string[]) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Updates (or creates) the local .gitignore file with a managed section
|
|
17
|
+
* containing the specified file entries.
|
|
18
|
+
* Returns the result including how many entries were added.
|
|
19
|
+
*/
|
|
20
|
+
export declare const updateGitignore: (gitignorePath: string, entries: readonly string[]) => Promise<GitignoreUpdateResult>;
|
|
21
|
+
//# sourceMappingURL=gitignore-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/gitignore-manager.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,MAGhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,iBAAiB,MAAM,EACvB,SAAS,SAAS,MAAM,EAAE,KACzB,MAgBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,SAAS,SAAS,MAAM,EAAE,KACzB,OAAO,CAAC,qBAAqB,CAY/B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
const MANAGED_START = '# --- jahia-cli:managed-start ---';
|
|
3
|
+
const MANAGED_END = '# --- jahia-cli:managed-end ---';
|
|
4
|
+
const MANAGED_HEADER = '# Files below are managed by jahia-cli tests init.\n' +
|
|
5
|
+
'# They are sourced from the remote scaffolding repository.\n' +
|
|
6
|
+
'# Remove a line to "own" that file and stop syncing it from remote.';
|
|
7
|
+
/**
|
|
8
|
+
* Builds the managed section content from a list of file paths.
|
|
9
|
+
*/
|
|
10
|
+
export const buildManagedSection = (entries) => {
|
|
11
|
+
const sorted = [...entries].sort((a, b) => a.localeCompare(b));
|
|
12
|
+
return [MANAGED_START, MANAGED_HEADER, ...sorted, MANAGED_END].join('\n');
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Replaces or appends the managed section in existing gitignore content.
|
|
16
|
+
* Preserves all user-owned content outside the markers.
|
|
17
|
+
*/
|
|
18
|
+
export const replaceManagedSection = (existingContent, entries) => {
|
|
19
|
+
const managedBlock = buildManagedSection(entries);
|
|
20
|
+
const startIdx = existingContent.indexOf(MANAGED_START);
|
|
21
|
+
const endIdx = existingContent.indexOf(MANAGED_END);
|
|
22
|
+
if (startIdx === -1 || endIdx === -1) {
|
|
23
|
+
const separator = existingContent.length > 0 && !existingContent.endsWith('\n') ? '\n\n' : '\n';
|
|
24
|
+
const prefix = existingContent.length === 0 ? '' : existingContent.trimEnd() + separator;
|
|
25
|
+
return prefix + managedBlock + '\n';
|
|
26
|
+
}
|
|
27
|
+
const before = existingContent.slice(0, startIdx);
|
|
28
|
+
const after = existingContent.slice(endIdx + MANAGED_END.length);
|
|
29
|
+
return before + managedBlock + after;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Updates (or creates) the local .gitignore file with a managed section
|
|
33
|
+
* containing the specified file entries.
|
|
34
|
+
* Returns the result including how many entries were added.
|
|
35
|
+
*/
|
|
36
|
+
export const updateGitignore = async (gitignorePath, entries) => {
|
|
37
|
+
const existing = await readFile(gitignorePath, 'utf-8').catch(() => '');
|
|
38
|
+
const created = existing === '';
|
|
39
|
+
const updated = replaceManagedSection(existing, entries);
|
|
40
|
+
await writeFile(gitignorePath, updated, 'utf-8');
|
|
41
|
+
return {
|
|
42
|
+
path: gitignorePath,
|
|
43
|
+
entriesAdded: entries.length,
|
|
44
|
+
created,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=gitignore-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-manager.js","sourceRoot":"","sources":["../../../src/lib/tests/gitignore-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAC1D,MAAM,WAAW,GAAG,iCAAiC,CAAC;AACtD,MAAM,cAAc,GAClB,sDAAsD;IACtD,8DAA8D;IAC9D,qEAAqE,CAAC;AAQxE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAU,EAAE;IACxE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,eAAuB,EACvB,OAA0B,EAClB,EAAE;IACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;QACzF,OAAO,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAEjE,OAAO,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;AACvC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,aAAqB,EACrB,OAA0B,EACM,EAAE;IAClC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,QAAQ,KAAK,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEzD,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { ScaffoldingCloneResult, SyncAction, SyncedFileEntry, SyncLogger, SyncMissingFilesParams, SyncMissingFilesResult } from './types.js';
|
|
2
|
+
export { cloneScaffolding, buildCloneArgs, DEFAULT_CYPRESS_REPOSITORY, resolveLatestTag, parseLatestTagFromLsRemote, } from './clone-scaffolding.js';
|
|
3
|
+
export { syncMissingFiles } from './sync-missing-files.js';
|
|
4
|
+
export { isExcluded, DEFAULT_EXCLUSION_PATTERNS } from './exclusion-list.js';
|
|
5
|
+
export { updateGitignore, buildManagedSection, replaceManagedSection } from './gitignore-manager.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAClJ,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { cloneScaffolding, buildCloneArgs, DEFAULT_CYPRESS_REPOSITORY, resolveLatestTag, parseLatestTagFromLsRemote, } from './clone-scaffolding.js';
|
|
2
|
+
export { syncMissingFiles } from './sync-missing-files.js';
|
|
3
|
+
export { isExcluded, DEFAULT_EXCLUSION_PATTERNS } from './exclusion-list.js';
|
|
4
|
+
export { updateGitignore, buildManagedSection, replaceManagedSection } from './gitignore-manager.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/tests/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-missing-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/sync-missing-files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA+B,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAoE9G,eAAO,MAAM,gBAAgB,GAAU,QAAQ,sBAAsB,KAAG,OAAO,CAAC,sBAAsB,CAqBrG,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { access, copyFile, mkdir, readdir } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join, relative, sep } from 'node:path';
|
|
3
|
+
import { isExcluded, DEFAULT_EXCLUSION_PATTERNS } from './exclusion-list.js';
|
|
4
|
+
const toPortablePath = (pathValue) => pathValue.split(sep).join('/');
|
|
5
|
+
const destinationFileExists = async (destinationPath) => access(destinationPath)
|
|
6
|
+
.then(() => true)
|
|
7
|
+
.catch(() => false);
|
|
8
|
+
const sortEntriesByPath = (entries) => [...entries].sort((left, right) => left.path.localeCompare(right.path));
|
|
9
|
+
const noopLogger = () => undefined;
|
|
10
|
+
const walkAndSync = async (params) => {
|
|
11
|
+
const entries = await readdir(params.sourceDir, { withFileTypes: true });
|
|
12
|
+
const nestedResults = await Promise.all(entries.map(async (entry) => {
|
|
13
|
+
const sourcePath = join(params.sourceDir, entry.name);
|
|
14
|
+
const destinationPath = join(params.destinationDir, entry.name);
|
|
15
|
+
if (entry.isDirectory()) {
|
|
16
|
+
await mkdir(destinationPath, { recursive: true });
|
|
17
|
+
return walkAndSync({
|
|
18
|
+
sourceDir: sourcePath,
|
|
19
|
+
destinationDir: destinationPath,
|
|
20
|
+
sourceRoot: params.sourceRoot,
|
|
21
|
+
exclusionPatterns: params.exclusionPatterns,
|
|
22
|
+
logger: params.logger,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
if (!entry.isFile()) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
const relativePath = toPortablePath(relative(params.sourceRoot, sourcePath));
|
|
29
|
+
if (isExcluded(relativePath, params.exclusionPatterns)) {
|
|
30
|
+
const reason = 'excluded by policy';
|
|
31
|
+
params.logger('ignored', relativePath, reason);
|
|
32
|
+
return [{ path: relativePath, action: 'ignored', reason }];
|
|
33
|
+
}
|
|
34
|
+
if (await destinationFileExists(destinationPath)) {
|
|
35
|
+
const reason = 'already exists locally';
|
|
36
|
+
params.logger('kept', relativePath, reason);
|
|
37
|
+
return [{ path: relativePath, action: 'kept', reason }];
|
|
38
|
+
}
|
|
39
|
+
await mkdir(dirname(destinationPath), { recursive: true });
|
|
40
|
+
await copyFile(sourcePath, destinationPath);
|
|
41
|
+
const reason = 'imported from remote';
|
|
42
|
+
params.logger('copied', relativePath, reason);
|
|
43
|
+
return [{ path: relativePath, action: 'copied', reason }];
|
|
44
|
+
}));
|
|
45
|
+
return nestedResults.flatMap((value) => value);
|
|
46
|
+
};
|
|
47
|
+
export const syncMissingFiles = async (params) => {
|
|
48
|
+
const exclusionPatterns = params.exclusionPatterns ?? DEFAULT_EXCLUSION_PATTERNS;
|
|
49
|
+
const logger = params.logger ?? noopLogger;
|
|
50
|
+
await mkdir(params.destinationDir, { recursive: true });
|
|
51
|
+
const entries = sortEntriesByPath(await walkAndSync({
|
|
52
|
+
sourceDir: params.sourceDir,
|
|
53
|
+
destinationDir: params.destinationDir,
|
|
54
|
+
sourceRoot: params.sourceDir,
|
|
55
|
+
exclusionPatterns,
|
|
56
|
+
logger,
|
|
57
|
+
}));
|
|
58
|
+
return {
|
|
59
|
+
entries,
|
|
60
|
+
copied: entries.filter((entry) => entry.action === 'copied').map((entry) => entry.path),
|
|
61
|
+
kept: entries.filter((entry) => entry.action === 'kept').map((entry) => entry.path),
|
|
62
|
+
ignored: entries.filter((entry) => entry.action === 'ignored').map((entry) => entry.path),
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=sync-missing-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-missing-files.js","sourceRoot":"","sources":["../../../src/lib/tests/sync-missing-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ScaffoldingCloneResult {
|
|
2
|
+
readonly version: string;
|
|
3
|
+
readonly repositoryUrl: string;
|
|
4
|
+
readonly checkoutDir: string;
|
|
5
|
+
readonly scaffoldingDir: string;
|
|
6
|
+
}
|
|
7
|
+
export type SyncAction = 'copied' | 'kept' | 'ignored';
|
|
8
|
+
export interface SyncedFileEntry {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly action: SyncAction;
|
|
11
|
+
readonly reason?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
export type SyncLogger = (action: SyncAction, relativePath: string, reason: string) => void;
|
|
14
|
+
export interface SyncMissingFilesParams {
|
|
15
|
+
readonly sourceDir: string;
|
|
16
|
+
readonly destinationDir: string;
|
|
17
|
+
readonly exclusionPatterns?: readonly string[] | undefined;
|
|
18
|
+
readonly logger?: SyncLogger | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface SyncMissingFilesResult {
|
|
21
|
+
readonly entries: readonly SyncedFileEntry[];
|
|
22
|
+
readonly copied: readonly string[];
|
|
23
|
+
readonly kept: readonly string[];
|
|
24
|
+
readonly ignored: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/tests/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WorkflowsMap } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a sample workflows configuration with representative steps
|
|
4
|
+
* to help users get started quickly. Returns a named workflows map
|
|
5
|
+
* with a single "main" workflow marked as default.
|
|
6
|
+
*/
|
|
7
|
+
export declare const buildSampleWorkflows: () => WorkflowsMap;
|
|
8
|
+
//# sourceMappingURL=build-sample-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-sample-workflow.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/build-sample-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAO,YAgCtC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a sample workflows configuration with representative steps
|
|
3
|
+
* to help users get started quickly. Returns a named workflows map
|
|
4
|
+
* with a single "main" workflow marked as default.
|
|
5
|
+
*/
|
|
6
|
+
export const buildSampleWorkflows = () => ({
|
|
7
|
+
main: {
|
|
8
|
+
default: true,
|
|
9
|
+
steps: [
|
|
10
|
+
{
|
|
11
|
+
name: 'Initialize test scaffolding',
|
|
12
|
+
uses: 'tests:init',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'Create Jahia environment',
|
|
16
|
+
uses: 'environment:create',
|
|
17
|
+
with: { force: 'true' },
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'Wait for Jahia to be healthy',
|
|
21
|
+
uses: 'environment:alive',
|
|
22
|
+
with: { timeout: '300' },
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'Install test dependencies',
|
|
26
|
+
run: 'yarn',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'Run tests',
|
|
30
|
+
run: 'yarn run e2e:ci',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'Cleanup environment',
|
|
34
|
+
uses: 'environment:delete',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=build-sample-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-sample-workflow.js","sourceRoot":"","sources":["../../../src/lib/workflow/build-sample-workflow.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAiB,EAAE,CAAC,CAAC;IACvD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE,YAAY;aACnB;YACD;gBACE,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aACxB;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;aACzB;YACD;gBACE,IAAI,EAAE,2BAA2B;gBACjC,GAAG,EAAE,MAAM;aACZ;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,GAAG,EAAE,iBAAiB;aACvB;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,oBAAoB;aAC3B;SACF;KACuB;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WorkflowStep, WorkflowsMap } from '../config/types.js';
|
|
2
|
+
import type { StepResult, WorkflowResult } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for executing a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export interface ExecuteWorkflowOptions {
|
|
7
|
+
readonly steps: readonly WorkflowStep[];
|
|
8
|
+
readonly configPath: string;
|
|
9
|
+
readonly statePath?: string | undefined;
|
|
10
|
+
readonly cwd: string;
|
|
11
|
+
readonly onStepStart?: ((name: string, index: number) => void) | undefined;
|
|
12
|
+
readonly onStepComplete?: ((result: StepResult, index: number) => void) | undefined;
|
|
13
|
+
readonly cliEntryPoint: string;
|
|
14
|
+
readonly workflows?: WorkflowsMap | undefined;
|
|
15
|
+
readonly callStack?: readonly string[] | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Executes a workflow's steps sequentially.
|
|
19
|
+
* Each step's environment is accumulated and passed to subsequent steps.
|
|
20
|
+
* Stops on first failure.
|
|
21
|
+
*/
|
|
22
|
+
export declare const executeWorkflow: (options: ExecuteWorkflowOptions) => Promise<WorkflowResult>;
|
|
23
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACpD;AAyKD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,cAAc,CAqB7F,CAAC"}
|