@jahia/jahia-cli 0.1.3 → 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,16 @@
|
|
|
1
|
+
import { rm } from 'node:fs/promises';
|
|
2
|
+
import { stateFilePath } from './state-file-path.js';
|
|
3
|
+
/**
|
|
4
|
+
* Deletes the state file from disk.
|
|
5
|
+
* No-op if the file does not exist.
|
|
6
|
+
*/
|
|
7
|
+
export const deleteState = async (statePath) => {
|
|
8
|
+
const path = stateFilePath(statePath);
|
|
9
|
+
try {
|
|
10
|
+
await rm(path);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// File may not exist — that's fine
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=delete-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-state.js","sourceRoot":"","sources":["../../../src/lib/state/delete-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,SAAkB,EAAiB,EAAE;IACrE,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PersistedEnvironment } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the currently active environment from state, or undefined if none exists.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getActiveEnvironment: (statePath?: string) => Promise<PersistedEnvironment | undefined>;
|
|
6
|
+
//# sourceMappingURL=get-active-environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-active-environment.d.ts","sourceRoot":"","sources":["../../../src/lib/state/get-active-environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAG1C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { loadState } from './load-state.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the currently active environment from state, or undefined if none exists.
|
|
4
|
+
*/
|
|
5
|
+
export const getActiveEnvironment = async (statePath) => {
|
|
6
|
+
const state = await loadState(statePath);
|
|
7
|
+
return state?.environment;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=get-active-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-active-environment.js","sourceRoot":"","sources":["../../../src/lib/state/get-active-environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,SAAkB,EACyB,EAAE;IAC7C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,WAAW,CAAC;AAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PersistedEnvironment } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Connection details for a Jahia instance, derived from environment state.
|
|
4
|
+
*/
|
|
5
|
+
export interface JahiaConnectionDefaults {
|
|
6
|
+
readonly url: string;
|
|
7
|
+
readonly username: string;
|
|
8
|
+
readonly password: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extracts Jahia connection defaults from the persisted environment state.
|
|
12
|
+
* Looks for a 'jahia' component to determine the host port and password.
|
|
13
|
+
* Falls back to hardcoded defaults when state is unavailable or incomplete.
|
|
14
|
+
*/
|
|
15
|
+
export declare const getJahiaConnectionDefaults: (env: PersistedEnvironment | undefined) => JahiaConnectionDefaults;
|
|
16
|
+
//# sourceMappingURL=get-jahia-connection-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-jahia-connection-defaults.d.ts","sourceRoot":"","sources":["../../../src/lib/state/get-jahia-connection-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAMD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,KAAK,oBAAoB,GAAG,SAAS,KACpC,uBAqBF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { COMPONENT_REGISTRY } from '../components/index.js';
|
|
2
|
+
import { resolveEnvVars } from '../config/resolve-env-vars.js';
|
|
3
|
+
const DEFAULT_URL = 'http://localhost:8080';
|
|
4
|
+
const DEFAULT_USERNAME = 'root';
|
|
5
|
+
const DEFAULT_PASSWORD = 'root1234';
|
|
6
|
+
/**
|
|
7
|
+
* Extracts Jahia connection defaults from the persisted environment state.
|
|
8
|
+
* Looks for a 'jahia' component to determine the host port and password.
|
|
9
|
+
* Falls back to hardcoded defaults when state is unavailable or incomplete.
|
|
10
|
+
*/
|
|
11
|
+
export const getJahiaConnectionDefaults = (env) => {
|
|
12
|
+
if (env === undefined) {
|
|
13
|
+
return { url: DEFAULT_URL, username: DEFAULT_USERNAME, password: DEFAULT_PASSWORD };
|
|
14
|
+
}
|
|
15
|
+
const jahiaConfig = env.config.components.find((c) => c.name === 'jahia');
|
|
16
|
+
const jahiaDef = COMPONENT_REGISTRY['jahia'];
|
|
17
|
+
// Resolve the host port: override → definition default → 8080
|
|
18
|
+
const portMapping = jahiaConfig?.overrides?.ports?.[0] ?? jahiaDef?.ports[0];
|
|
19
|
+
const port = portMapping?.host ?? 8080;
|
|
20
|
+
const url = `http://localhost:${String(port)}`;
|
|
21
|
+
// Resolve password: override env → definition env (with env var resolution) → default
|
|
22
|
+
const rawPassword = jahiaConfig?.overrides?.env?.['SUPER_USER_PASSWORD'] ??
|
|
23
|
+
jahiaDef?.env['SUPER_USER_PASSWORD'] ??
|
|
24
|
+
DEFAULT_PASSWORD;
|
|
25
|
+
const password = resolveEnvVars(rawPassword);
|
|
26
|
+
return { url, username: DEFAULT_USERNAME, password };
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=get-jahia-connection-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-jahia-connection-defaults.js","sourceRoot":"","sources":["../../../src/lib/state/get-jahia-connection-defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAW/D,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,GAAqC,EACZ,EAAE;IAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE7C,8DAA8D;IAC9D,MAAM,WAAW,GAAG,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,oBAAoB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAE/C,sFAAsF;IACtF,MAAM,WAAW,GACf,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC;QACpD,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC;QACpC,gBAAgB,CAAC;IACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-active-environment.d.ts","sourceRoot":"","sources":["../../../src/lib/state/has-active-environment.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,OAAO,CAG9E,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { loadState } from './load-state.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns true if there is an active environment in the state file.
|
|
4
|
+
*/
|
|
5
|
+
export const hasActiveEnvironment = async (statePath) => {
|
|
6
|
+
const state = await loadState(statePath);
|
|
7
|
+
return state?.environment !== undefined;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=has-active-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-active-environment.js","sourceRoot":"","sources":["../../../src/lib/state/has-active-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,SAAkB,EAAoB,EAAE;IACjF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,WAAW,KAAK,SAAS,CAAC;AAC1C,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { PersistedComponent, PersistedEnvironment, StateFile } from './types.js';
|
|
2
|
+
export { stateFilePath } from './state-file-path.js';
|
|
3
|
+
export { loadState } from './load-state.js';
|
|
4
|
+
export { saveState } from './save-state.js';
|
|
5
|
+
export { deleteState } from './delete-state.js';
|
|
6
|
+
export { getActiveEnvironment } from './get-active-environment.js';
|
|
7
|
+
export { hasActiveEnvironment } from './has-active-environment.js';
|
|
8
|
+
export { reconcileWithDocker } from './reconcile-with-docker.js';
|
|
9
|
+
export type { ReconciledComponent, ReconciledEnvironment } from './reconcile-with-docker.js';
|
|
10
|
+
export { stateFlag } from './state-flag.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/state/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { stateFilePath } from './state-file-path.js';
|
|
2
|
+
export { loadState } from './load-state.js';
|
|
3
|
+
export { saveState } from './save-state.js';
|
|
4
|
+
export { deleteState } from './delete-state.js';
|
|
5
|
+
export { getActiveEnvironment } from './get-active-environment.js';
|
|
6
|
+
export { hasActiveEnvironment } from './has-active-environment.js';
|
|
7
|
+
export { reconcileWithDocker } from './reconcile-with-docker.js';
|
|
8
|
+
export { stateFlag } from './state-flag.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/state/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StateFile } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads the state file from disk.
|
|
4
|
+
* Returns undefined if the file does not exist or is unreadable.
|
|
5
|
+
*/
|
|
6
|
+
export declare const loadState: (statePath?: string) => Promise<StateFile | undefined>;
|
|
7
|
+
//# sourceMappingURL=load-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-state.d.ts","sourceRoot":"","sources":["../../../src/lib/state/load-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAQjF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { stateFilePath } from './state-file-path.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loads the state file from disk.
|
|
5
|
+
* Returns undefined if the file does not exist or is unreadable.
|
|
6
|
+
*/
|
|
7
|
+
export const loadState = async (statePath) => {
|
|
8
|
+
const path = stateFilePath(statePath);
|
|
9
|
+
try {
|
|
10
|
+
const content = await readFile(path, 'utf-8');
|
|
11
|
+
return JSON.parse(content);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=load-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-state.js","sourceRoot":"","sources":["../../../src/lib/state/load-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,SAAkB,EAAkC,EAAE;IACpF,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PersistedComponent, PersistedEnvironment } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reconciled component with live Docker status.
|
|
4
|
+
*/
|
|
5
|
+
export interface ReconciledComponent extends PersistedComponent {
|
|
6
|
+
readonly liveStatus: 'running' | 'stopped' | 'missing';
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Reconciled environment with live Docker status on each component.
|
|
10
|
+
*/
|
|
11
|
+
export interface ReconciledEnvironment extends Omit<PersistedEnvironment, 'components'> {
|
|
12
|
+
readonly components: readonly ReconciledComponent[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Reconciles the persisted environment state with live Docker container status.
|
|
16
|
+
* Checks each container and annotates with its actual status.
|
|
17
|
+
*/
|
|
18
|
+
export declare const reconcileWithDocker: (environment: PersistedEnvironment) => Promise<ReconciledEnvironment>;
|
|
19
|
+
//# sourceMappingURL=reconcile-with-docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile-with-docker.d.ts","sourceRoot":"","sources":["../../../src/lib/state/reconcile-with-docker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAwB3E;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;IACrF,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,aAAa,oBAAoB,KAChC,OAAO,CAAC,qBAAqB,CAY/B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether a container is still running in Docker.
|
|
6
|
+
* Returns 'running', 'stopped', or 'missing'.
|
|
7
|
+
*/
|
|
8
|
+
const checkContainerStatus = async (containerId) => {
|
|
9
|
+
try {
|
|
10
|
+
const { stdout } = await execFileAsync('docker', [
|
|
11
|
+
'inspect',
|
|
12
|
+
'--format',
|
|
13
|
+
'{{.State.Running}}',
|
|
14
|
+
containerId,
|
|
15
|
+
]);
|
|
16
|
+
return stdout.trim() === 'true' ? 'running' : 'stopped';
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return 'missing';
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Reconciles the persisted environment state with live Docker container status.
|
|
24
|
+
* Checks each container and annotates with its actual status.
|
|
25
|
+
*/
|
|
26
|
+
export const reconcileWithDocker = async (environment) => {
|
|
27
|
+
const reconciledComponents = await Promise.all(environment.components.map(async (comp) => {
|
|
28
|
+
const liveStatus = await checkContainerStatus(comp.containerId);
|
|
29
|
+
return { ...comp, liveStatus };
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
...environment,
|
|
33
|
+
components: reconciledComponents,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=reconcile-with-docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile-with-docker.js","sourceRoot":"","sources":["../../../src/lib/state/reconcile-with-docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;;GAGG;AACH,MAAM,oBAAoB,GAAG,KAAK,EAChC,WAAmB,EACyB,EAAE;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE;YAC/C,SAAS;YACT,UAAU;YACV,oBAAoB;YACpB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAgBF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,WAAiC,EACD,EAAE;IAClC,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5C,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAgC,EAAE;QACtE,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChE,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,GAAG,WAAW;QACd,UAAU,EAAE,oBAAoB;KACjC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StateFile } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Saves the state file to disk.
|
|
4
|
+
* Creates the directory if it does not exist.
|
|
5
|
+
*/
|
|
6
|
+
export declare const saveState: (state: StateFile, statePath?: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=save-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-state.d.ts","sourceRoot":"","sources":["../../../src/lib/state/save-state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;;;GAGG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,EAChB,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAId,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { stateFilePath } from './state-file-path.js';
|
|
4
|
+
/**
|
|
5
|
+
* Saves the state file to disk.
|
|
6
|
+
* Creates the directory if it does not exist.
|
|
7
|
+
*/
|
|
8
|
+
export const saveState = async (state, statePath) => {
|
|
9
|
+
const path = stateFilePath(statePath);
|
|
10
|
+
await mkdir(dirname(path), { recursive: true });
|
|
11
|
+
await writeFile(path, JSON.stringify(state, null, 2), 'utf-8');
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=save-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-state.js","sourceRoot":"","sources":["../../../src/lib/state/save-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,KAAgB,EAChB,SAAkB,EACH,EAAE;IACjB,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the state file path.
|
|
3
|
+
* Priority: explicit statePath param > JAHIA_CLI_STATE env var >
|
|
4
|
+
* JAHIA_CLI_STATE_DIR env var (legacy, resolved to <dir>/state.json) >
|
|
5
|
+
* default (~/.jahia-cli/state.json).
|
|
6
|
+
*/
|
|
7
|
+
export declare const stateFilePath: (statePath?: string) => string;
|
|
8
|
+
//# sourceMappingURL=state-file-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-file-path.d.ts","sourceRoot":"","sources":["../../../src/lib/state/state-file-path.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,MAAM,KAAG,MAIlD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the state file path.
|
|
5
|
+
* Priority: explicit statePath param > JAHIA_CLI_STATE env var >
|
|
6
|
+
* JAHIA_CLI_STATE_DIR env var (legacy, resolved to <dir>/state.json) >
|
|
7
|
+
* default (~/.jahia-cli/state.json).
|
|
8
|
+
*/
|
|
9
|
+
export const stateFilePath = (statePath) => {
|
|
10
|
+
const legacyStateDir = process.env['JAHIA_CLI_STATE_DIR'];
|
|
11
|
+
const legacyStatePath = legacyStateDir ? join(legacyStateDir, 'state.json') : undefined;
|
|
12
|
+
return statePath ?? process.env['JAHIA_CLI_STATE'] ?? legacyStatePath ?? join(homedir(), '.jahia-cli', 'state.json');
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=state-file-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-file-path.js","sourceRoot":"","sources":["../../../src/lib/state/state-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAkB,EAAU,EAAE;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,OAAO,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACvH,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared OCLIF flag definition for --state.
|
|
3
|
+
* Spread into any command's static flags that reads or writes state.
|
|
4
|
+
*/
|
|
5
|
+
export declare const stateFlag: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
|
+
//# sourceMappingURL=state-flag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-flag.d.ts","sourceRoot":"","sources":["../../../src/lib/state/state-flag.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,iHAMpB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Shared OCLIF flag definition for --state.
|
|
4
|
+
* Spread into any command's static flags that reads or writes state.
|
|
5
|
+
*/
|
|
6
|
+
export const stateFlag = Flags.string({
|
|
7
|
+
description: 'Path to the state JSON file. ' +
|
|
8
|
+
'Overrides JAHIA_CLI_STATE env var. ' +
|
|
9
|
+
'Defaults to ~/.jahia-cli/state.json',
|
|
10
|
+
env: 'JAHIA_CLI_STATE',
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=state-flag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-flag.js","sourceRoot":"","sources":["../../../src/lib/state/state-flag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;IACpC,WAAW,EACT,+BAA+B;QAC/B,qCAAqC;QACrC,qCAAqC;IACvC,GAAG,EAAE,iBAAiB;CACvB,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { EnvironmentConfig } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A persisted component entry — tracks container identity for lifecycle ops.
|
|
4
|
+
*/
|
|
5
|
+
export interface PersistedComponent {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly image: string;
|
|
8
|
+
readonly tag: string;
|
|
9
|
+
readonly containerId: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Full persisted environment state — stored in the state file.
|
|
13
|
+
*/
|
|
14
|
+
export interface PersistedEnvironment {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly provider: string;
|
|
17
|
+
readonly network: string;
|
|
18
|
+
readonly components: readonly PersistedComponent[];
|
|
19
|
+
readonly config: EnvironmentConfig;
|
|
20
|
+
readonly createdAt: string;
|
|
21
|
+
readonly stoppedAt?: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Top-level state file structure with schema version.
|
|
25
|
+
*/
|
|
26
|
+
export interface StateFile {
|
|
27
|
+
readonly version: 1;
|
|
28
|
+
readonly environment?: PersistedEnvironment | undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/state/types.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|