@jahia/jahia-cli 0.2.0 → 0.3.1
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/dist/commands/init.js +4 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/jahia/provision.d.ts +37 -2
- package/dist/commands/jahia/provision.d.ts.map +1 -1
- package/dist/commands/jahia/provision.js +241 -53
- package/dist/commands/jahia/provision.js.map +1 -1
- 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/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.map +1 -1
- package/dist/commands/workflow/init.js +15 -14
- package/dist/commands/workflow/init.js.map +1 -1
- package/dist/commands/workflow/run.d.ts +3 -1
- package/dist/commands/workflow/run.d.ts.map +1 -1
- package/dist/commands/workflow/run.js +62 -14
- package/dist/commands/workflow/run.js.map +1 -1
- 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.map +1 -1
- package/dist/lib/components/index.js +3 -0
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/components/jahia.d.ts.map +1 -1
- package/dist/lib/components/jahia.js +1 -0
- package/dist/lib/components/jahia.js.map +1 -1
- package/dist/lib/components/smtp-server.d.ts.map +1 -1
- package/dist/lib/components/smtp-server.js +1 -0
- package/dist/lib/components/smtp-server.js.map +1 -1
- package/dist/lib/components/types.d.ts +12 -0
- package/dist/lib/components/types.d.ts.map +1 -1
- package/dist/lib/config/config-to-yaml-with-comments.d.ts.map +1 -1
- package/dist/lib/config/config-to-yaml-with-comments.js +28 -3
- package/dist/lib/config/config-to-yaml-with-comments.js.map +1 -1
- package/dist/lib/config/config-to-yaml.d.ts.map +1 -1
- package/dist/lib/config/config-to-yaml.js +13 -1
- package/dist/lib/config/config-to-yaml.js.map +1 -1
- package/dist/lib/config/parser.d.ts +17 -4
- package/dist/lib/config/parser.d.ts.map +1 -1
- package/dist/lib/config/parser.js +101 -12
- package/dist/lib/config/parser.js.map +1 -1
- package/dist/lib/config/types.d.ts +57 -3
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/providers/docker/container.d.ts +2 -0
- package/dist/lib/providers/docker/container.d.ts.map +1 -1
- package/dist/lib/providers/docker/container.js +5 -1
- package/dist/lib/providers/docker/container.js.map +1 -1
- 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/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/types.d.ts +11 -0
- package/dist/lib/provisioning/types.d.ts.map +1 -1
- 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/workflow/build-sample-workflow.d.ts +5 -4
- package/dist/lib/workflow/build-sample-workflow.d.ts.map +1 -1
- package/dist/lib/workflow/build-sample-workflow.js +35 -31
- package/dist/lib/workflow/build-sample-workflow.js.map +1 -1
- package/dist/lib/workflow/executor.d.ts +3 -1
- package/dist/lib/workflow/executor.d.ts.map +1 -1
- package/dist/lib/workflow/executor.js +29 -0
- package/dist/lib/workflow/executor.js.map +1 -1
- package/dist/lib/workflow/format-workflow-sources.d.ts +17 -0
- package/dist/lib/workflow/format-workflow-sources.d.ts.map +1 -0
- package/dist/lib/workflow/format-workflow-sources.js +85 -0
- package/dist/lib/workflow/format-workflow-sources.js.map +1 -0
- package/dist/lib/workflow/load-global-workflows.d.ts +24 -0
- package/dist/lib/workflow/load-global-workflows.d.ts.map +1 -0
- package/dist/lib/workflow/load-global-workflows.js +49 -0
- package/dist/lib/workflow/load-global-workflows.js.map +1 -0
- package/dist/lib/workflow/merge-workflow-into-config.d.ts +4 -4
- package/dist/lib/workflow/merge-workflow-into-config.d.ts.map +1 -1
- package/dist/lib/workflow/merge-workflow-into-config.js +4 -4
- package/dist/lib/workflow/merge-workflow-into-config.js.map +1 -1
- package/dist/lib/workflow/merge-workflow-sources.d.ts +27 -0
- package/dist/lib/workflow/merge-workflow-sources.d.ts.map +1 -0
- package/dist/lib/workflow/merge-workflow-sources.js +55 -0
- package/dist/lib/workflow/merge-workflow-sources.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/resolve-workflows-file-path.d.ts +13 -0
- package/dist/lib/workflow/resolve-workflows-file-path.d.ts.map +1 -0
- package/dist/lib/workflow/resolve-workflows-file-path.js +22 -0
- package/dist/lib/workflow/resolve-workflows-file-path.js.map +1 -0
- package/oclif.manifest.json +318 -108
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAC9B,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAC9B,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC,KAAG,SAAS,MAAM,EAmElB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,QAAQ;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD,KAAG,OAAO,CAAC,MAAM,CAIjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,KACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAiBtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAMhE,CAAC"}
|
|
@@ -11,7 +11,11 @@ export const containerName = (envName, componentName) => `jahia-cli-${envName}-$
|
|
|
11
11
|
* This is a pure function for easy testing.
|
|
12
12
|
*/
|
|
13
13
|
export const buildRunArgs = (params) => {
|
|
14
|
-
const args = ['run'
|
|
14
|
+
const args = ['run'];
|
|
15
|
+
if (params.detached !== false) {
|
|
16
|
+
args.push('-d');
|
|
17
|
+
}
|
|
18
|
+
args.push('--name', containerName(params.envName, params.componentName));
|
|
15
19
|
// Network
|
|
16
20
|
args.push('--network', params.networkName);
|
|
17
21
|
// Network aliases
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAU1C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,aAAqB,EAAU,EAAE,CAC9E,aAAa,OAAO,IAAI,aAAa,EAAE,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/lib/providers/docker/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters a list of file paths using a glob pattern matched against
|
|
3
|
+
* each file's basename. Returns matching paths sorted alphabetically
|
|
4
|
+
* by basename for reproducible ordering across platforms.
|
|
5
|
+
*/
|
|
6
|
+
export declare const filterFiles: (filePaths: readonly string[], pattern: string) => readonly string[];
|
|
7
|
+
//# sourceMappingURL=filter-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-files.d.ts","sourceRoot":"","sources":["../../../src/lib/provisioning/filter-files.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,SAAS,MAAM,EAAE,EAC5B,SAAS,MAAM,KACd,SAAS,MAAM,EAKjB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
import picomatch from 'picomatch';
|
|
3
|
+
/**
|
|
4
|
+
* Filters a list of file paths using a glob pattern matched against
|
|
5
|
+
* each file's basename. Returns matching paths sorted alphabetically
|
|
6
|
+
* by basename for reproducible ordering across platforms.
|
|
7
|
+
*/
|
|
8
|
+
export const filterFiles = (filePaths, pattern) => {
|
|
9
|
+
const isMatch = picomatch(pattern);
|
|
10
|
+
return [...filePaths]
|
|
11
|
+
.filter((filePath) => isMatch(basename(filePath)))
|
|
12
|
+
.sort((a, b) => basename(a).localeCompare(basename(b)));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=filter-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-files.js","sourceRoot":"","sources":["../../../src/lib/provisioning/filter-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAA4B,EAC5B,OAAe,EACI,EAAE;IACrB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,SAAS,CAAC;SAClB,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FileActionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Provisioning action types supported by the Jahia provisioning API.
|
|
4
|
+
* - module: installs or upgrades a bundle (JAR)
|
|
5
|
+
* - script: executes a provisioning script (groovy, etc.)
|
|
6
|
+
*/
|
|
7
|
+
export type FileActionType = 'module' | 'script';
|
|
8
|
+
/**
|
|
9
|
+
* Builds the JSON script payload for the provisioning API based on action type.
|
|
10
|
+
*/
|
|
11
|
+
export declare const buildScriptPayload: (actionType: FileActionType, filename: string) => string;
|
|
12
|
+
/**
|
|
13
|
+
* Submits a single file to the Jahia provisioning API.
|
|
14
|
+
*
|
|
15
|
+
* The `script` form field is sent as a plain text string (not a file blob),
|
|
16
|
+
* containing a JSON array that describes the operation.
|
|
17
|
+
* The `file` form field carries the binary file content.
|
|
18
|
+
*
|
|
19
|
+
* Endpoint: POST {url}/modules/api/provisioning
|
|
20
|
+
*/
|
|
21
|
+
export declare const submitFileAction: (options: {
|
|
22
|
+
readonly url: string;
|
|
23
|
+
readonly username: string;
|
|
24
|
+
readonly password: string;
|
|
25
|
+
readonly filename: string;
|
|
26
|
+
readonly content: Buffer;
|
|
27
|
+
readonly actionType: FileActionType;
|
|
28
|
+
}) => Promise<FileActionResult>;
|
|
29
|
+
//# sourceMappingURL=submit-file-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-file-action.d.ts","sourceRoot":"","sources":["../../../src/lib/provisioning/submit-file-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAcnD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,YAAY,cAAc,EAAE,UAAU,MAAM,KAAG,MAKjF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAU,SAAS;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC,KAAG,OAAO,CAAC,gBAAgB,CAgD3B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attempts to parse a string as JSON. Returns the parsed value on success
|
|
3
|
+
* or undefined if the string is not valid JSON.
|
|
4
|
+
*/
|
|
5
|
+
const parseJsonSafe = (text) => {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(text);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Builds the JSON script payload for the provisioning API based on action type.
|
|
15
|
+
*/
|
|
16
|
+
export const buildScriptPayload = (actionType, filename) => {
|
|
17
|
+
const payload = actionType === 'module'
|
|
18
|
+
? [{ installOrUpgradeBundle: filename, forceUpdate: true }]
|
|
19
|
+
: [{ executeScript: filename }];
|
|
20
|
+
return JSON.stringify(payload);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Submits a single file to the Jahia provisioning API.
|
|
24
|
+
*
|
|
25
|
+
* The `script` form field is sent as a plain text string (not a file blob),
|
|
26
|
+
* containing a JSON array that describes the operation.
|
|
27
|
+
* The `file` form field carries the binary file content.
|
|
28
|
+
*
|
|
29
|
+
* Endpoint: POST {url}/modules/api/provisioning
|
|
30
|
+
*/
|
|
31
|
+
export const submitFileAction = async (options) => {
|
|
32
|
+
const { url, username, password, filename, content, actionType } = options;
|
|
33
|
+
const endpoint = url.endsWith('/')
|
|
34
|
+
? `${url}modules/api/provisioning`
|
|
35
|
+
: `${url}/modules/api/provisioning`;
|
|
36
|
+
const auth = Buffer.from(`${username}:${password}`).toString('base64');
|
|
37
|
+
const form = new FormData();
|
|
38
|
+
form.append('script', buildScriptPayload(actionType, filename));
|
|
39
|
+
const fileBlob = new Blob([content], { type: 'application/octet-stream' });
|
|
40
|
+
form.append('file', fileBlob, filename);
|
|
41
|
+
const start = Date.now();
|
|
42
|
+
try {
|
|
43
|
+
const response = await fetch(endpoint, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: {
|
|
46
|
+
Authorization: `Basic ${auth}`,
|
|
47
|
+
Origin: url.endsWith('/') ? url.slice(0, -1) : url,
|
|
48
|
+
},
|
|
49
|
+
body: form,
|
|
50
|
+
});
|
|
51
|
+
const responseText = await response.text();
|
|
52
|
+
const durationMs = Date.now() - start;
|
|
53
|
+
return {
|
|
54
|
+
success: response.ok,
|
|
55
|
+
statusCode: response.status,
|
|
56
|
+
message: responseText,
|
|
57
|
+
responseBody: parseJsonSafe(responseText),
|
|
58
|
+
filename,
|
|
59
|
+
durationMs,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const durationMs = Date.now() - start;
|
|
64
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
statusCode: 0,
|
|
68
|
+
message,
|
|
69
|
+
responseBody: undefined,
|
|
70
|
+
filename,
|
|
71
|
+
durationMs,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=submit-file-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-file-action.js","sourceRoot":"","sources":["../../../src/lib/provisioning/submit-file-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,17 @@ export interface ProvisioningResult {
|
|
|
9
9
|
readonly manifest: string;
|
|
10
10
|
readonly durationMs: number;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Result of a single file action submission (module install or script execution).
|
|
14
|
+
*/
|
|
15
|
+
export interface FileActionResult {
|
|
16
|
+
readonly success: boolean;
|
|
17
|
+
readonly statusCode: number;
|
|
18
|
+
readonly message: string;
|
|
19
|
+
readonly responseBody: unknown;
|
|
20
|
+
readonly filename: string;
|
|
21
|
+
readonly durationMs: number;
|
|
22
|
+
}
|
|
12
23
|
/**
|
|
13
24
|
* Options for submitting a provisioning script to Jahia.
|
|
14
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/provisioning/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/provisioning/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Dockerfile path relative to the working directory.
|
|
3
|
+
*/
|
|
4
|
+
export declare const DEFAULT_DOCKERFILE = "docker/Dockerfile.local";
|
|
5
|
+
/**
|
|
6
|
+
* Default image name prefix for built test images.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_IMAGE_NAME = "jahia-tests";
|
|
9
|
+
/**
|
|
10
|
+
* Resolves the image tag for the test image build.
|
|
11
|
+
* Uses the scaffolding version from config, with env var substitution.
|
|
12
|
+
*/
|
|
13
|
+
export declare const resolveImageTag: (imageName: string, version: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Parses a repeatable `KEY=VALUE` flag into a record.
|
|
16
|
+
* Applies `${VAR:-default}` env var resolution to values for consistency
|
|
17
|
+
* with the config system.
|
|
18
|
+
*/
|
|
19
|
+
export declare const parseKeyValueArgs: (args: readonly string[]) => Readonly<Record<string, string>>;
|
|
20
|
+
/**
|
|
21
|
+
* Builds the argument list for `docker buildx build`.
|
|
22
|
+
*
|
|
23
|
+
* Pure function — all inputs explicit, no side effects.
|
|
24
|
+
*/
|
|
25
|
+
export declare const buildBuildxArgs: (params: {
|
|
26
|
+
readonly dockerfile: string;
|
|
27
|
+
readonly tag: string;
|
|
28
|
+
readonly baseVersion: string;
|
|
29
|
+
readonly platform?: string | undefined;
|
|
30
|
+
readonly noCache?: boolean | undefined;
|
|
31
|
+
readonly extraBuildArgs?: Readonly<Record<string, string>> | undefined;
|
|
32
|
+
}) => readonly string[];
|
|
33
|
+
//# sourceMappingURL=build-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-image.d.ts","sourceRoot":"","sources":["../../../src/lib/tests/build-image.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,EACjB,SAAS,MAAM,KACd,MAAmC,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,SAAS,MAAM,EAAE,KACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW/B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACxE,KAAG,SAAS,MAAM,EAgClB,CAAC"}
|
|
@@ -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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WorkflowsMap } from '../config/types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Builds a sample
|
|
4
|
-
* to help users get started quickly.
|
|
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.
|
|
5
6
|
*/
|
|
6
|
-
export declare const
|
|
7
|
+
export declare const buildSampleWorkflows: () => WorkflowsMap;
|
|
7
8
|
//# sourceMappingURL=build-sample-workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-sample-workflow.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/build-sample-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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"}
|
|
@@ -1,35 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Builds a sample
|
|
3
|
-
* to help users get started quickly.
|
|
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.
|
|
4
5
|
*/
|
|
5
|
-
export const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
+
},
|
|
34
38
|
});
|
|
35
39
|
//# sourceMappingURL=build-sample-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-sample-workflow.js","sourceRoot":"","sources":["../../../src/lib/workflow/build-sample-workflow.ts"],"names":[],"mappings":"AAEA
|
|
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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WorkflowStep } from '../config/types.js';
|
|
1
|
+
import type { WorkflowStep, WorkflowsMap } from '../config/types.js';
|
|
2
2
|
import type { StepResult, WorkflowResult } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Options for executing a workflow.
|
|
@@ -11,6 +11,8 @@ export interface ExecuteWorkflowOptions {
|
|
|
11
11
|
readonly onStepStart?: ((name: string, index: number) => void) | undefined;
|
|
12
12
|
readonly onStepComplete?: ((result: StepResult, index: number) => void) | undefined;
|
|
13
13
|
readonly cliEntryPoint: string;
|
|
14
|
+
readonly workflows?: WorkflowsMap | undefined;
|
|
15
|
+
readonly callStack?: readonly string[] | undefined;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Executes a workflow's steps sequentially.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
2
|
import { buildFlagsFromWith, getStepDisplayName } from './types.js';
|
|
3
|
+
import { detectCircularCall, resolveWorkflowByName } from './resolve-workflow.js';
|
|
3
4
|
/**
|
|
4
5
|
* Executes a shell command (`run:` step) via execa.
|
|
5
6
|
* Inherits stdio so output streams to the terminal in real time.
|
|
@@ -28,6 +29,27 @@ const executeUsesStep = async (command, withFlags, cwd, env, statePath, cliEntry
|
|
|
28
29
|
stdio: 'inherit',
|
|
29
30
|
});
|
|
30
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Executes a nested workflow in-process (for `uses: workflow:run` steps).
|
|
34
|
+
* Detects circular calls via the callStack.
|
|
35
|
+
*/
|
|
36
|
+
const executeNestedWorkflow = async (targetName, options, _env) => {
|
|
37
|
+
const { workflows, callStack = [] } = options;
|
|
38
|
+
if (workflows === undefined) {
|
|
39
|
+
throw new Error('Cannot run nested workflow:run — no workflows map available.');
|
|
40
|
+
}
|
|
41
|
+
detectCircularCall(targetName, callStack);
|
|
42
|
+
const targetWorkflow = resolveWorkflowByName(workflows, targetName);
|
|
43
|
+
return executeWorkflow({
|
|
44
|
+
...options,
|
|
45
|
+
steps: targetWorkflow.steps,
|
|
46
|
+
callStack: [...callStack, targetName],
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a step is an in-process workflow:run call.
|
|
51
|
+
*/
|
|
52
|
+
const isWorkflowRunStep = (step) => step.uses === 'workflow:run' && step.with?.['name'] !== undefined;
|
|
31
53
|
/**
|
|
32
54
|
* Processes a single workflow step, returning updated state.
|
|
33
55
|
*/
|
|
@@ -45,6 +67,13 @@ const processStep = async (statePromise, step, index, options) => {
|
|
|
45
67
|
if (step.run !== undefined) {
|
|
46
68
|
await executeRunStep(step.run, stepCwd, state.env);
|
|
47
69
|
}
|
|
70
|
+
else if (isWorkflowRunStep(step)) {
|
|
71
|
+
const targetName = step.with?.['name'] ?? '';
|
|
72
|
+
const nestedResult = await executeNestedWorkflow(targetName, options, state.env);
|
|
73
|
+
if (!nestedResult.success) {
|
|
74
|
+
throw new Error(`Nested workflow "${targetName}" failed`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
48
77
|
else if (step.uses !== undefined) {
|
|
49
78
|
await executeUsesStep(step.uses, step.with, stepCwd, state.env, statePath, cliEntryPoint);
|
|
50
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/lib/workflow/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAI9B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/lib/workflow/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { WorkflowsMap } from '../config/types.js';
|
|
2
|
+
import type { GlobalWorkflowsLoadResult } from './load-global-workflows.js';
|
|
3
|
+
import type { MergedWorkflowsResult } from './merge-workflow-sources.js';
|
|
4
|
+
/**
|
|
5
|
+
* Builds the human-readable "Workflow sources:" section.
|
|
6
|
+
*/
|
|
7
|
+
export declare const formatWorkflowSources: (configPath: string, localWorkflowCount: number, globalResult: GlobalWorkflowsLoadResult | undefined) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Builds the human-readable "Available workflows:" section.
|
|
10
|
+
* Marks the selected workflow with → and the default with (default).
|
|
11
|
+
*/
|
|
12
|
+
export declare const formatAvailableWorkflows: (mergedResult: MergedWorkflowsResult, selectedName: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Builds structured source info for JSON output.
|
|
15
|
+
*/
|
|
16
|
+
export declare const buildWorkflowSourcesJson: (configPath: string, localWorkflows: WorkflowsMap | undefined, globalResult: GlobalWorkflowsLoadResult | undefined, mergedResult: MergedWorkflowsResult, selectedName: string) => Record<string, unknown>;
|
|
17
|
+
//# sourceMappingURL=format-workflow-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-workflow-sources.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/format-workflow-sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAkB,MAAM,6BAA6B,CAAC;AAEzF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,oBAAoB,MAAM,EAC1B,cAAc,yBAAyB,GAAG,SAAS,KAClD,MAsBF,CAAC;AAcF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,cAAc,qBAAqB,EACnC,cAAc,MAAM,KACnB,MAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,YAAY,MAAM,EAClB,gBAAgB,YAAY,GAAG,SAAS,EACxC,cAAc,yBAAyB,GAAG,SAAS,EACnD,cAAc,qBAAqB,EACnC,cAAc,MAAM,KACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CA0BvB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the human-readable "Workflow sources:" section.
|
|
3
|
+
*/
|
|
4
|
+
export const formatWorkflowSources = (configPath, localWorkflowCount, globalResult) => {
|
|
5
|
+
const lines = ['▶ Workflow sources:'];
|
|
6
|
+
const localLabel = localWorkflowCount > 0
|
|
7
|
+
? `✓ Local config: ${configPath} (${String(localWorkflowCount)} workflows)`
|
|
8
|
+
: ` Local config: ${configPath} (no workflows)`;
|
|
9
|
+
lines.push(` ${localLabel}`);
|
|
10
|
+
if (globalResult !== undefined) {
|
|
11
|
+
if (!globalResult.found) {
|
|
12
|
+
lines.push(` ⚠ Global file: ${globalResult.path} (file not found, skipping)`);
|
|
13
|
+
}
|
|
14
|
+
else if (globalResult.error !== undefined) {
|
|
15
|
+
lines.push(` ⚠ Global file: ${globalResult.path} (${globalResult.error})`);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const count = globalResult.workflows !== undefined
|
|
19
|
+
? Object.keys(globalResult.workflows).length
|
|
20
|
+
: 0;
|
|
21
|
+
lines.push(` ✓ Global file: ${globalResult.path} (${String(count)} workflows loaded)`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return lines.join('\n');
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Returns a human-readable source label for a workflow.
|
|
28
|
+
*/
|
|
29
|
+
const sourceLabel = (source) => {
|
|
30
|
+
const labels = {
|
|
31
|
+
'global': 'global',
|
|
32
|
+
'local': 'local',
|
|
33
|
+
'local-override': 'local, overrides global',
|
|
34
|
+
};
|
|
35
|
+
return labels[source];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Builds the human-readable "Available workflows:" section.
|
|
39
|
+
* Marks the selected workflow with → and the default with (default).
|
|
40
|
+
*/
|
|
41
|
+
export const formatAvailableWorkflows = (mergedResult, selectedName) => {
|
|
42
|
+
const lines = ['▶ Available workflows:'];
|
|
43
|
+
Object.entries(mergedResult.workflows).forEach(([name, wf]) => {
|
|
44
|
+
const source = mergedResult.sources[name] ?? 'local';
|
|
45
|
+
const isSelected = name === selectedName;
|
|
46
|
+
const isDefault = wf.default === true;
|
|
47
|
+
const prefix = isSelected ? '→' : ' ';
|
|
48
|
+
const defaultTag = isDefault ? ', default' : '';
|
|
49
|
+
const selectedTag = isSelected ? ' ← selected' : '';
|
|
50
|
+
const padded = name.padEnd(16);
|
|
51
|
+
lines.push(` ${prefix} ${padded}(${sourceLabel(source)}${defaultTag})${selectedTag}`);
|
|
52
|
+
});
|
|
53
|
+
return lines.join('\n');
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Builds structured source info for JSON output.
|
|
57
|
+
*/
|
|
58
|
+
export const buildWorkflowSourcesJson = (configPath, localWorkflows, globalResult, mergedResult, selectedName) => ({
|
|
59
|
+
sources: {
|
|
60
|
+
local: {
|
|
61
|
+
path: configPath,
|
|
62
|
+
workflowCount: localWorkflows !== undefined ? Object.keys(localWorkflows).length : 0,
|
|
63
|
+
},
|
|
64
|
+
...(globalResult !== undefined
|
|
65
|
+
? {
|
|
66
|
+
global: {
|
|
67
|
+
path: globalResult.path,
|
|
68
|
+
found: globalResult.found,
|
|
69
|
+
...(globalResult.error !== undefined ? { error: globalResult.error } : {}),
|
|
70
|
+
workflowCount: globalResult.workflows !== undefined
|
|
71
|
+
? Object.keys(globalResult.workflows).length
|
|
72
|
+
: 0,
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
: {}),
|
|
76
|
+
},
|
|
77
|
+
availableWorkflows: Object.entries(mergedResult.workflows).map(([name, wf]) => ({
|
|
78
|
+
name,
|
|
79
|
+
source: mergedResult.sources[name],
|
|
80
|
+
default: wf.default === true,
|
|
81
|
+
selected: name === selectedName,
|
|
82
|
+
})),
|
|
83
|
+
selectedWorkflow: selectedName,
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=format-workflow-sources.js.map
|