@quadnix/octo-build 0.0.16 → 0.1.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/LICENSE +661 -0
- package/README.md +25 -3
- package/dist/commands/apply/apply.command.d.ts +25 -0
- package/dist/commands/apply/apply.command.js +136 -0
- package/dist/commands/apply/apply.command.js.map +1 -0
- package/dist/commands/apply/index.d.ts +1 -0
- package/dist/commands/apply/index.js +2 -0
- package/dist/commands/apply/index.js.map +1 -0
- package/dist/commands/build/build.command.d.ts +1 -1
- package/dist/commands/build/build.command.js +4 -4
- package/dist/commands/build/build.command.js.map +1 -1
- package/dist/commands/build/main.d.ts +22 -0
- package/dist/commands/build/main.js +22 -0
- package/dist/commands/build/main.js.map +1 -1
- package/dist/commands/build/parsers/build-file.parser.d.ts +6 -0
- package/dist/commands/build/parsers/build-file.parser.js +6 -0
- package/dist/commands/build/parsers/build-file.parser.js.map +1 -1
- package/dist/commands/build/streams/stream-manager.d.ts +6 -0
- package/dist/commands/build/streams/stream-manager.js +7 -1
- package/dist/commands/build/streams/stream-manager.js.map +1 -1
- package/dist/commands/commit/commit.command.d.ts +22 -0
- package/dist/commands/commit/commit.command.js +94 -0
- package/dist/commands/commit/commit.command.js.map +1 -0
- package/dist/commands/commit/index.d.ts +1 -0
- package/dist/commands/commit/index.js +2 -0
- package/dist/commands/commit/index.js.map +1 -0
- package/dist/commands/create-anchor/create-anchor.command.js +1 -1
- package/dist/commands/create-anchor/create-anchor.command.js.map +1 -1
- package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.d.ts +18 -3
- package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.js +29 -11
- package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.js.map +1 -1
- package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/templates/anchors/anchor/anchor.schema.ts.ejs +9 -1
- package/dist/commands/create-app/create-app.command.d.ts +1 -1
- package/dist/commands/create-app/create-app.command.js +7 -3
- package/dist/commands/create-app/create-app.command.js.map +1 -1
- package/dist/commands/create-app/generator-octo-app-template/generators/app/index.d.ts +17 -1
- package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js +60 -18
- package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js.map +1 -1
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/README.md.ejs +60 -10
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/gitignore.ejs +13 -0
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/index.ts.ejs +19 -0
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/package.json.ejs +9 -1
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-dynamodb-service/octo.yaml.ejs +111 -0
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/octo.yaml.ejs +198 -0
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/octo.yaml.ejs +14 -0
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/tsconfig.json.ejs +0 -3
- package/dist/commands/{create-resource/create-resource.command.d.ts → create-external-resource/create-external-resource.command.d.ts} +1 -1
- package/dist/commands/create-external-resource/create-external-resource.command.js +64 -0
- package/dist/commands/create-external-resource/create-external-resource.command.js.map +1 -0
- package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/index.d.ts +17 -2
- package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/index.js +36 -35
- package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/index.js.map +1 -0
- package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/templates/resources/resource/actions/add.resource.action.ts.ejs +7 -16
- package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/templates/resources/resource/actions/delete.resource.action.ts.ejs +21 -3
- package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/templates/resources/resource/actions/update.resource.action.ts.ejs +63 -0
- package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/templates/resources/resource/index.ts.ejs +1 -2
- package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +28 -0
- package/dist/commands/create-external-resource/index.d.ts +1 -0
- package/dist/commands/create-external-resource/index.js +2 -0
- package/dist/commands/create-external-resource/index.js.map +1 -0
- package/dist/commands/create-model/create-model.command.js +1 -1
- package/dist/commands/create-model/create-model.command.js.map +1 -1
- package/dist/commands/create-model/generator-octo-model-template/generators/app/index.d.ts +17 -2
- package/dist/commands/create-model/generator-octo-model-template/generators/app/index.js +26 -9
- package/dist/commands/create-model/generator-octo-model-template/generators/app/index.js.map +1 -1
- package/dist/commands/create-model/generator-octo-model-template/generators/app/templates/models/model/model.ts.ejs +3 -1
- package/dist/commands/create-model/generator-octo-model-template/generators/app/templates/models/model/schema.ts.ejs +6 -1
- package/dist/commands/create-module/create-module.command.js +1 -1
- package/dist/commands/create-module/create-module.command.js.map +1 -1
- package/dist/commands/create-module/generator-octo-module-template/generators/app/index.d.ts +17 -2
- package/dist/commands/create-module/generator-octo-module-template/generators/app/index.js +27 -10
- package/dist/commands/create-module/generator-octo-module-template/generators/app/index.js.map +1 -1
- package/dist/commands/create-overlay/create-overlay.command.js +4 -3
- package/dist/commands/create-overlay/create-overlay.command.js.map +1 -1
- package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.d.ts +17 -2
- package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.js +26 -9
- package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.js.map +1 -1
- package/dist/commands/{create-cdk/create-cdk.command.d.ts → create-terraform-resource/create-terraform-resource.command.d.ts} +3 -3
- package/dist/commands/{create-resource/create-resource.command.js → create-terraform-resource/create-terraform-resource.command.js} +17 -11
- package/dist/commands/create-terraform-resource/create-terraform-resource.command.js.map +1 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.d.ts +25 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.js +71 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.js.map +1 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/index.schema.ts.ejs +43 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/index.ts.ejs +1 -0
- package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +83 -0
- package/dist/commands/create-terraform-resource/index.d.ts +1 -0
- package/dist/commands/create-terraform-resource/index.js +2 -0
- package/dist/commands/create-terraform-resource/index.js.map +1 -0
- package/dist/commands/generate/generate.command.d.ts +14 -0
- package/dist/commands/generate/generate.command.js +35 -0
- package/dist/commands/generate/generate.command.js.map +1 -0
- package/dist/commands/generate/index.d.ts +1 -0
- package/dist/commands/generate/index.js +2 -0
- package/dist/commands/generate/index.js.map +1 -0
- package/dist/commands/get-response/get-response.command.d.ts +18 -0
- package/dist/commands/get-response/get-response.command.js +39 -0
- package/dist/commands/get-response/get-response.command.js.map +1 -0
- package/dist/commands/get-response/index.d.ts +1 -0
- package/dist/commands/get-response/index.js +2 -0
- package/dist/commands/get-response/index.js.map +1 -0
- package/dist/commands/lock/index.d.ts +1 -0
- package/dist/commands/lock/index.js +2 -0
- package/dist/commands/lock/index.js.map +1 -0
- package/dist/commands/lock/lock.command.d.ts +13 -0
- package/dist/commands/lock/lock.command.js +28 -0
- package/dist/commands/lock/lock.command.js.map +1 -0
- package/dist/commands/run-action/index.d.ts +1 -0
- package/dist/commands/run-action/index.js +2 -0
- package/dist/commands/run-action/index.js.map +1 -0
- package/dist/commands/run-action/run-action.command.d.ts +12 -0
- package/dist/commands/run-action/run-action.command.js +46 -0
- package/dist/commands/run-action/run-action.command.js.map +1 -0
- package/dist/commands/unlock/index.d.ts +1 -0
- package/dist/commands/unlock/index.js +2 -0
- package/dist/commands/unlock/index.js.map +1 -0
- package/dist/commands/unlock/unlock.command.d.ts +18 -0
- package/dist/commands/unlock/unlock.command.js +51 -0
- package/dist/commands/unlock/unlock.command.js.map +1 -0
- package/dist/commands/validate/index.d.ts +1 -0
- package/dist/commands/validate/index.js +2 -0
- package/dist/commands/validate/index.js.map +1 -0
- package/dist/commands/validate/validate.command.d.ts +17 -0
- package/dist/commands/validate/validate.command.js +68 -0
- package/dist/commands/validate/validate.command.js.map +1 -0
- package/dist/index.js +20 -8
- package/dist/index.js.map +1 -1
- package/dist/resources/octo-v1.schema.json +86 -19
- package/dist/utilities/definition/yaml/yaml-definition.utility.d.ts +98 -10
- package/dist/utilities/definition/yaml/yaml-definition.utility.js +197 -66
- package/dist/utilities/definition/yaml/yaml-definition.utility.js.map +1 -1
- package/dist/utilities/octo/octo.utility.d.ts +48 -0
- package/dist/utilities/octo/octo.utility.js +144 -0
- package/dist/utilities/octo/octo.utility.js.map +1 -0
- package/dist/utilities/process/process.utility.d.ts +8 -0
- package/dist/utilities/process/process.utility.js +8 -0
- package/dist/utilities/process/process.utility.js.map +1 -1
- package/dist/utilities/project-index/project-index.utility.d.ts +27 -0
- package/dist/utilities/project-index/project-index.utility.js +71 -0
- package/dist/utilities/project-index/project-index.utility.js.map +1 -0
- package/dist/utilities/string/string.utility.d.ts +22 -0
- package/dist/utilities/string/string.utility.js +27 -0
- package/dist/utilities/string/string.utility.js.map +1 -1
- package/package.json +9 -8
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/app.config.ts.ejs +0 -23
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/env.ejs +0 -2
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/main.ts.ejs +0 -24
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/module-definitions.ts.ejs +0 -201
- package/dist/commands/create-cdk/create-cdk.command.js +0 -70
- package/dist/commands/create-cdk/create-cdk.command.js.map +0 -1
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.d.ts +0 -10
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.js +0 -107
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.js.map +0 -1
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/README.md.ejs +0 -23
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/eslint.config.js.ejs +0 -337
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/gitignore.ejs +0 -82
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/gitkeep.ejs +0 -0
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/package.json.ejs +0 -57
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/prettierrc.ejs +0 -5
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/anchors/app/app.anchor.schema.ts.ejs +0 -19
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/anchors/app/app.anchor.ts.ejs +0 -17
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/factories/dummy-credentials.factory.ts.ejs +0 -28
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/dummy-app.module.spec.ts.ejs +0 -90
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/dummy-app.module.ts.ejs +0 -16
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/index.schema.ts.ejs +0 -10
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/index.ts.ejs +0 -3
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/models/app/actions/add-dummy-app.model.action.ts.ejs +0 -59
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/models/app/index.ts.ejs +0 -1
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/actions/add-http-fetch.resource.action.ts.ejs +0 -55
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/http-fetch.resource.ts.ejs +0 -12
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/index.schema.ts.ejs +0 -35
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/index.ts.ejs +0 -3
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/utilities/dummy/dummy.utility.ts.ejs +0 -11
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/tsconfig.build.json.ejs +0 -11
- package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/tsconfig.json.ejs +0 -39
- package/dist/commands/create-cdk/index.d.ts +0 -1
- package/dist/commands/create-cdk/index.js +0 -2
- package/dist/commands/create-cdk/index.js.map +0 -1
- package/dist/commands/create-resource/create-resource.command.js.map +0 -1
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js.map +0 -1
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/update-tags.resource.action.ts.ejs +0 -86
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/validate.resource.action.ts.ejs +0 -40
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +0 -12
- package/dist/commands/create-resource/index.d.ts +0 -1
- package/dist/commands/create-resource/index.js +0 -2
- package/dist/commands/create-resource/index.js.map +0 -1
- package/dist/commands/run/index.d.ts +0 -1
- package/dist/commands/run/index.js +0 -2
- package/dist/commands/run/index.js.map +0 -1
- package/dist/commands/run/run.command.d.ts +0 -11
- package/dist/commands/run/run.command.js +0 -83
- package/dist/commands/run/run.command.js.map +0 -1
- package/dist/commands/state/index.d.ts +0 -1
- package/dist/commands/state/index.js +0 -2
- package/dist/commands/state/index.js.map +0 -1
- package/dist/commands/state/state.command.d.ts +0 -14
- package/dist/commands/state/state.command.js +0 -79
- package/dist/commands/state/state.command.js.map +0 -1
- /package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/templates/resources/resource/index.schema.ts.ejs +0 -0
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'fs';
|
|
2
|
+
import { createRequire } from 'module';
|
|
2
3
|
import { dirname, join, resolve } from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import { LocalEncryptionStateProvider, LocalStateProvider, TestStateProvider } from '@quadnix/octo';
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from 'url';
|
|
5
|
+
import { LocalEncryptionStateProvider, LocalStateProvider, TestStateProvider, } from '@quadnix/octo';
|
|
5
6
|
import { Ajv2020 as Ajv } from 'ajv/dist/2020.js';
|
|
6
7
|
import { load } from 'js-yaml';
|
|
7
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
/**
|
|
10
|
+
* Reads `octo.yml` and turns each section into the values {@link Octo} is booted with.
|
|
11
|
+
*/
|
|
8
12
|
export class YamlDefinitionUtility {
|
|
13
|
+
/**
|
|
14
|
+
* @param definitionFilePath Path to the definition file.
|
|
15
|
+
* @throws If the file is unreadable, or fails schema validation.
|
|
16
|
+
*/
|
|
9
17
|
constructor(definitionFilePath) {
|
|
10
18
|
definitionFilePath = resolve(process.cwd(), definitionFilePath);
|
|
19
|
+
this.definitionDir = dirname(definitionFilePath);
|
|
11
20
|
if (!existsSync(definitionFilePath)) {
|
|
12
21
|
throw new Error('Cannot find definition file: ' + definitionFilePath);
|
|
13
22
|
}
|
|
@@ -20,32 +29,20 @@ export class YamlDefinitionUtility {
|
|
|
20
29
|
}
|
|
21
30
|
this.validateDefinition();
|
|
22
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Substitutes `${env.KEY}` references in a value with what the definition's `env` block declares.
|
|
34
|
+
*
|
|
35
|
+
* Arrays and objects are walked, because a module input is as nested as its schema: a reference
|
|
36
|
+
* can sit inside a list of images, or a key of an object, as readily as at the top level.
|
|
37
|
+
*
|
|
38
|
+
* @throws If a value holds one of its own ancestors, which no substitution over it terminates on.
|
|
39
|
+
*/
|
|
23
40
|
resolveEnvironmentValue(value) {
|
|
24
|
-
|
|
25
|
-
return value;
|
|
26
|
-
}
|
|
27
|
-
const pattern = value.match(/^\$\{env\.(.+)}$/);
|
|
28
|
-
if (!pattern || pattern.length < 2) {
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
const environmentKey = this.definition.env.find((e) => e.key === pattern[1]);
|
|
32
|
-
if (!environmentKey) {
|
|
33
|
-
throw new Error(`Key "${pattern[1]}" not found under "env"!`);
|
|
34
|
-
}
|
|
35
|
-
let resolvedValue = process.env[pattern[1]] || environmentKey.value;
|
|
36
|
-
const { kind } = environmentKey;
|
|
37
|
-
switch (kind) {
|
|
38
|
-
case 'boolean': {
|
|
39
|
-
return Boolean(resolvedValue);
|
|
40
|
-
}
|
|
41
|
-
case 'number': {
|
|
42
|
-
return Number(resolvedValue);
|
|
43
|
-
}
|
|
44
|
-
default: {
|
|
45
|
-
return String(resolvedValue);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
41
|
+
return this.resolveNestedEnvironmentValue(value, new Set());
|
|
48
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Imports the hook callbacks the definition names, in the shape {@link Octo.registerHooks} takes.
|
|
45
|
+
*/
|
|
49
46
|
async resolveHooks() {
|
|
50
47
|
const hooks = {
|
|
51
48
|
postCommitHooks: [],
|
|
@@ -60,8 +57,8 @@ export class YamlDefinitionUtility {
|
|
|
60
57
|
}
|
|
61
58
|
for (const hookDef of this.definition.hooks) {
|
|
62
59
|
const { importPath, method } = hookDef;
|
|
63
|
-
const resolvedImport = importPath.startsWith('.') || importPath.startsWith('/') ? resolve(process.cwd(), importPath) : importPath;
|
|
64
60
|
try {
|
|
61
|
+
const resolvedImport = this.resolveImportPath(importPath);
|
|
65
62
|
const imported = await import(resolvedImport);
|
|
66
63
|
if (!imported[method]) {
|
|
67
64
|
throw new Error(`Unable to find export "${method}" in path "${resolvedImport}"!`);
|
|
@@ -77,11 +74,14 @@ export class YamlDefinitionUtility {
|
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
catch (error) {
|
|
80
|
-
throw new Error(`Failed to import path "${
|
|
77
|
+
throw new Error(`Failed to import path "${importPath}": ${error?.message || String(error)}`);
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
80
|
return hooks;
|
|
84
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Imports every module class the definition's `imports` block names.
|
|
84
|
+
*/
|
|
85
85
|
async resolveImports() {
|
|
86
86
|
const imports = [];
|
|
87
87
|
if (!this.definition.imports?.length) {
|
|
@@ -89,8 +89,8 @@ export class YamlDefinitionUtility {
|
|
|
89
89
|
}
|
|
90
90
|
for (const importDef of this.definition.imports) {
|
|
91
91
|
const { className, importPath } = importDef;
|
|
92
|
-
const resolvedImport = importPath.startsWith('.') || importPath.startsWith('/') ? resolve(process.cwd(), importPath) : importPath;
|
|
93
92
|
try {
|
|
93
|
+
const resolvedImport = this.resolveImportPath(importPath);
|
|
94
94
|
const imported = await import(resolvedImport);
|
|
95
95
|
if (!imported[className]) {
|
|
96
96
|
throw new Error(`Unable to find export "${className}" in path "${resolvedImport}"!`);
|
|
@@ -100,32 +100,51 @@ export class YamlDefinitionUtility {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
catch (error) {
|
|
103
|
-
throw new Error(`Failed to import path "${
|
|
103
|
+
throw new Error(`Failed to import path "${importPath}": ${error?.message || String(error)}`);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
return imports;
|
|
107
107
|
}
|
|
108
|
-
|
|
108
|
+
/**
|
|
109
|
+
* @param logDestination Where the logging listener writes. `run-action` passes `stderr`, because
|
|
110
|
+
* terraform's `data "external"` protocol requires that command's stdout to carry only the response
|
|
111
|
+
* JSON.
|
|
112
|
+
*/
|
|
113
|
+
async resolveListeners({ logDestination = 'stdout' } = {}) {
|
|
109
114
|
const listeners = [];
|
|
110
115
|
if (!this.definition.settings?.listeners?.length) {
|
|
111
116
|
return listeners;
|
|
112
117
|
}
|
|
113
118
|
for (const listenerDef of this.definition.settings.listeners) {
|
|
114
119
|
if (listenerDef.type === 'HtmlReportEventListener') {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
const imported = await import('@quadnix/octo-event-listeners/html-report');
|
|
121
|
+
listeners.push({
|
|
122
|
+
args: [{ reportDir: listenerDef.reportDir }],
|
|
123
|
+
type: imported.HtmlReportEventListener,
|
|
124
|
+
});
|
|
119
125
|
}
|
|
120
126
|
else if (listenerDef.type === 'LoggingEventListener') {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
127
|
+
const imported = await import('@quadnix/octo-event-listeners/logging');
|
|
128
|
+
// Default to whether the destination is a terminal, so a redirected log carries no escape
|
|
129
|
+
// codes. An explicit `colorize:` in the definition still wins.
|
|
130
|
+
const destinationStream = logDestination === 'stderr' ? process.stderr : process.stdout;
|
|
131
|
+
listeners.push({
|
|
132
|
+
args: [
|
|
133
|
+
{
|
|
134
|
+
colorize: listenerDef.colorize ?? Boolean(destinationStream.isTTY),
|
|
135
|
+
destination: logDestination,
|
|
136
|
+
level: listenerDef.level ?? 'info',
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
type: imported.LoggingEventListener,
|
|
140
|
+
});
|
|
125
141
|
}
|
|
126
142
|
}
|
|
127
143
|
return listeners;
|
|
128
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Pairs each `modules` entry with its imported class, and resolves its inputs.
|
|
147
|
+
*/
|
|
129
148
|
resolveModules(imports) {
|
|
130
149
|
const modules = [];
|
|
131
150
|
if (!this.definition.modules?.length) {
|
|
@@ -145,16 +164,22 @@ export class YamlDefinitionUtility {
|
|
|
145
164
|
}
|
|
146
165
|
return modules;
|
|
147
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Builds the {@link IStateProvider} the definition asks for.
|
|
169
|
+
*/
|
|
148
170
|
resolveStateProvider() {
|
|
149
171
|
const stateProvider = this.definition.settings.stateProvider;
|
|
172
|
+
// Anchored to the definition file for the same reason imports are: `run-action` runs with
|
|
173
|
+
// terragrunt's cache directory as its cwd, and a state path resolved from there would point at
|
|
174
|
+
// an empty directory - the action would read no prior state and write its result nowhere useful.
|
|
150
175
|
if (stateProvider.type === 'LocalEncryptionStateProvider') {
|
|
151
176
|
return {
|
|
152
|
-
type: new LocalEncryptionStateProvider(stateProvider.statePath, stateProvider.encryptionKey),
|
|
177
|
+
type: new LocalEncryptionStateProvider(resolve(this.definitionDir, stateProvider.statePath), stateProvider.encryptionKey),
|
|
153
178
|
};
|
|
154
179
|
}
|
|
155
180
|
else if (stateProvider.type === 'LocalStateProvider') {
|
|
156
181
|
return {
|
|
157
|
-
type: new LocalStateProvider(stateProvider.statePath),
|
|
182
|
+
type: new LocalStateProvider(resolve(this.definitionDir, stateProvider.statePath)),
|
|
158
183
|
};
|
|
159
184
|
}
|
|
160
185
|
else if (stateProvider.type === 'TestStateProvider') {
|
|
@@ -166,40 +191,146 @@ export class YamlDefinitionUtility {
|
|
|
166
191
|
throw new Error(`Invalid state provider!`);
|
|
167
192
|
}
|
|
168
193
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
194
|
+
/**
|
|
195
|
+
* The tag registrations the definition declares, in the shape {@link Octo.registerTags} takes.
|
|
196
|
+
*
|
|
197
|
+
* A `scope` naming a `moduleId` reaches that module's resources; an absent or empty one reaches
|
|
198
|
+
* every resource of the run.
|
|
199
|
+
*/
|
|
200
|
+
resolveTags() {
|
|
201
|
+
const tags = [];
|
|
202
|
+
if (!this.definition.tags?.length) {
|
|
203
|
+
return tags;
|
|
204
|
+
}
|
|
205
|
+
for (const tagDefinition of this.definition.tags) {
|
|
206
|
+
const resolvedTags = {};
|
|
207
|
+
for (const [key, value] of Object.entries(tagDefinition.tags)) {
|
|
208
|
+
// A tag value is always a string, so an `${env.KEY}` declared as a number or a boolean is
|
|
209
|
+
// rendered rather than handed to the resource as the kind it was declared with.
|
|
210
|
+
resolvedTags[key] = String(this.resolveEnvironmentValue(value));
|
|
211
|
+
}
|
|
212
|
+
tags.push({ scope: tagDefinition.scope || {}, tags: resolvedTags });
|
|
213
|
+
}
|
|
214
|
+
return tags;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The terraform version, required providers, and provider blocks the definition declares.
|
|
218
|
+
*/
|
|
219
|
+
resolveTerraformOptions() {
|
|
220
|
+
const terraform = this.definition.terraform;
|
|
221
|
+
const providers = terraform.providers.map((p) => {
|
|
222
|
+
const spec = {};
|
|
223
|
+
for (const [key, value] of Object.entries(p.spec || {})) {
|
|
224
|
+
spec[key] = this.resolveEnvironmentValue(value);
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
accountId: this.resolveEnvironmentValue(p.accountId),
|
|
228
|
+
accountName: p.accountName ? this.resolveEnvironmentValue(p.accountName) : undefined,
|
|
229
|
+
providerType: p.providerType,
|
|
230
|
+
regionId: this.resolveEnvironmentValue(p.regionId),
|
|
231
|
+
// Passed through as-is: undefined lets octo apply its per-provider-type default.
|
|
232
|
+
setRegionAttribute: p.setRegionAttribute,
|
|
233
|
+
spec,
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
return {
|
|
237
|
+
providers,
|
|
238
|
+
requiredProviders: terraform.requiredProviders,
|
|
239
|
+
requiredVersion: this.resolveEnvironmentValue(terraform.requiredVersion),
|
|
179
240
|
};
|
|
180
|
-
|
|
181
|
-
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Substitutes one `${env.KEY}` reference with what the definition's `env` block declares for that
|
|
244
|
+
* key, read in the kind the block gives it. Anything holding no reference is returned as it came.
|
|
245
|
+
*/
|
|
246
|
+
resolveEnvironmentReference(value) {
|
|
247
|
+
if (typeof value !== 'string') {
|
|
248
|
+
return value;
|
|
182
249
|
}
|
|
183
|
-
|
|
184
|
-
|
|
250
|
+
const pattern = value.match(/^\$\{env\.(.+)}$/);
|
|
251
|
+
if (!pattern || pattern.length < 2) {
|
|
252
|
+
return value;
|
|
185
253
|
}
|
|
186
|
-
|
|
187
|
-
|
|
254
|
+
// `env` is optional in the schema, so a definition can reference `${env.X}` without declaring
|
|
255
|
+
// one. Treat that as an empty block and let the "not found" error below report it.
|
|
256
|
+
const environmentKey = (this.definition.env ?? []).find((e) => e.key === pattern[1]);
|
|
257
|
+
if (!environmentKey) {
|
|
258
|
+
throw new Error(`Key "${pattern[1]}" not found under "env"!`);
|
|
188
259
|
}
|
|
189
|
-
|
|
190
|
-
|
|
260
|
+
let resolvedValue = process.env[pattern[1]] || environmentKey.value;
|
|
261
|
+
const { kind } = environmentKey;
|
|
262
|
+
switch (kind) {
|
|
263
|
+
case 'boolean': {
|
|
264
|
+
// A shell always supplies a string, and `Boolean("false")` is `true`. Parse the string form
|
|
265
|
+
// rather than coercing it, and reject anything that is not plainly a boolean.
|
|
266
|
+
if (typeof resolvedValue === 'boolean') {
|
|
267
|
+
return resolvedValue;
|
|
268
|
+
}
|
|
269
|
+
const normalizedValue = String(resolvedValue).trim().toLowerCase();
|
|
270
|
+
if (normalizedValue === 'true') {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
else if (normalizedValue === 'false') {
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
throw new Error(`Value "${resolvedValue}" for key "${pattern[1]}" is not a boolean!`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
case 'number': {
|
|
281
|
+
return Number(resolvedValue);
|
|
282
|
+
}
|
|
283
|
+
default: {
|
|
284
|
+
return String(resolvedValue);
|
|
285
|
+
}
|
|
191
286
|
}
|
|
192
|
-
|
|
193
|
-
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Resolves a definition-file import specifier to something `import()` can load.
|
|
290
|
+
*
|
|
291
|
+
* A relative path resolves against the **definition file's own directory**. It cannot resolve
|
|
292
|
+
* against the current working directory: terraform invokes `octo run-action` from inside a
|
|
293
|
+
* terragrunt cache directory, so a definition saying `./dist/index.js` - which is what every
|
|
294
|
+
* generated app says - would be looked for under the cache and never found.
|
|
295
|
+
*
|
|
296
|
+
* A bare specifier resolves against the **user's project root**, not octo-build's own install
|
|
297
|
+
* directory - node would otherwise resolve it from wherever octo-build happens to live. A flat
|
|
298
|
+
* `node_modules` hides that; a linked store does not, and there the user's own dependencies are
|
|
299
|
+
* invisible.
|
|
300
|
+
*/
|
|
301
|
+
resolveImportPath(importPath) {
|
|
302
|
+
if (importPath.startsWith('.') || importPath.startsWith('/')) {
|
|
303
|
+
return resolve(this.definitionDir, importPath);
|
|
194
304
|
}
|
|
195
|
-
|
|
196
|
-
|
|
305
|
+
const requireFromProject = createRequire(join(this.definitionDir, 'package.json'));
|
|
306
|
+
return pathToFileURL(requireFromProject.resolve(importPath)).href;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Walks a value, substituting every `${env.KEY}` reference it holds at any depth.
|
|
310
|
+
*
|
|
311
|
+
* `ancestors` is the chain currently being walked rather than everything already seen. A YAML
|
|
312
|
+
* anchor used in two places points one node at two parents, which resolves twice and is no cycle;
|
|
313
|
+
* a node reappearing beneath itself is one, and walking it never ends.
|
|
314
|
+
*
|
|
315
|
+
* @throws If a value holds one of its own ancestors.
|
|
316
|
+
*/
|
|
317
|
+
resolveNestedEnvironmentValue(value, ancestors) {
|
|
318
|
+
if (value === null || typeof value !== 'object') {
|
|
319
|
+
return this.resolveEnvironmentReference(value);
|
|
197
320
|
}
|
|
198
|
-
if (
|
|
199
|
-
|
|
321
|
+
if (ancestors.has(value)) {
|
|
322
|
+
throw new Error('Definition holds a value that contains itself!');
|
|
200
323
|
}
|
|
201
|
-
|
|
324
|
+
ancestors.add(value);
|
|
325
|
+
const resolvedValue = Array.isArray(value)
|
|
326
|
+
? value.map((v) => this.resolveNestedEnvironmentValue(v, ancestors))
|
|
327
|
+
: Object.fromEntries(Object.entries(value).map(([key, v]) => [key, this.resolveNestedEnvironmentValue(v, ancestors)]));
|
|
328
|
+
ancestors.delete(value);
|
|
329
|
+
return resolvedValue;
|
|
202
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* Checks the definition against `octo-v1.schema.json`.
|
|
333
|
+
*/
|
|
203
334
|
validateDefinition() {
|
|
204
335
|
if (!this.definition?.version || typeof this.definition?.version !== 'number') {
|
|
205
336
|
throw new Error(`Definition version "${this.definition?.version}" must be a number!`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-definition.utility.js","sourceRoot":"","sources":["../../../../src/utilities/definition/yaml/yaml-definition.utility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yaml-definition.utility.js","sourceRoot":"","sources":["../../../../src/utilities/definition/yaml/yaml-definition.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type App, Octo } from '@quadnix/octo';
|
|
2
|
+
/**
|
|
3
|
+
* Boots only the state provider the definition names, without loading a single module.
|
|
4
|
+
*
|
|
5
|
+
* `apply` is a terraform action rather than an octo mode, so it has no reason to compose a model
|
|
6
|
+
* graph - but terraform state is checked out of the state provider and back into it around every
|
|
7
|
+
* terraform command, so the provider still has to be there.
|
|
8
|
+
*/
|
|
9
|
+
export declare function bootStateProvider(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* @param quietStdout Keeps **stdout** free of everything but the command's own output. Set by
|
|
12
|
+
* `run-action`, whose stdout is consumed by terraform's `data "external"` as JSON.
|
|
13
|
+
*
|
|
14
|
+
* It does not disable listeners — it routes them to stderr, so that the SDK resource-action path,
|
|
15
|
+
* the only place resource actions actually execute, stays observable.
|
|
16
|
+
*/
|
|
17
|
+
export declare function bootOcto({ quietStdout }?: {
|
|
18
|
+
quietStdout?: boolean;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
app: App;
|
|
21
|
+
octo: Octo;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Makes the environment survive the trip into terraform's `local-exec`.
|
|
25
|
+
*
|
|
26
|
+
* An external resource shells back out to `octo` from the terraform that terragrunt runs -
|
|
27
|
+
* `run-action` from its `local-exec` provisioner, `get-response` from its `data "external"` - and
|
|
28
|
+
* those commands inherit this process's environment. Two things about it are wrong by default, and
|
|
29
|
+
* both fail only after real infrastructure exists:
|
|
30
|
+
*
|
|
31
|
+
* - **`octo` is a bare binary name**, resolved through `PATH`. Invoking a binary by path -
|
|
32
|
+
* `node_modules/.bin/octo apply` - does not put its directory on `PATH` for child processes, so
|
|
33
|
+
* the callback dies with `octo: command not found`. The generated app runs the flow through
|
|
34
|
+
* package scripts, and `npm run` does put that directory on `PATH`, but running the binary
|
|
35
|
+
* directly is still supported and has to work the same. The project's bin directory is prepended
|
|
36
|
+
* here, and the directory this CLI is running from after it, so a globally installed or linked
|
|
37
|
+
* octo still wins over nothing at all.
|
|
38
|
+
* - **`OCTO_DEFINITION_FILE_PATH` is usually relative** (`octo.yaml` - the package scripts set
|
|
39
|
+
* exactly that), and terraform runs `local-exec` with a terragrunt cache directory as its cwd,
|
|
40
|
+
* where that resolves to nothing. It is made absolute here, against the cwd the user actually
|
|
41
|
+
* invoked from.
|
|
42
|
+
*/
|
|
43
|
+
export declare function prepareCallbackEnvironment(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Prints an octo error to stderr, including the properties it carries - the diff that matched no
|
|
46
|
+
* action, most of all - which a bare stack trace would hide.
|
|
47
|
+
*/
|
|
48
|
+
export declare function reportError(error: any): void;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { delimiter, dirname, resolve } from 'path';
|
|
3
|
+
import { Container, Octo, StateManagementService } from '@quadnix/octo';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { YamlDefinitionUtility } from '../definition/yaml/yaml-definition.utility.js';
|
|
6
|
+
/**
|
|
7
|
+
* The absolute path of the definition file, from `OCTO_DEFINITION_FILE_PATH`.
|
|
8
|
+
*
|
|
9
|
+
* @throws If the variable is unset, or names a file that does not exist.
|
|
10
|
+
*/
|
|
11
|
+
function resolveDefinitionFilePath() {
|
|
12
|
+
const fromEnv = process.env.OCTO_DEFINITION_FILE_PATH;
|
|
13
|
+
if (!fromEnv) {
|
|
14
|
+
throw new Error(`Environment variable "OCTO_DEFINITION_FILE_PATH" is not set! Set it to the path of your Octo definition YAML file.`);
|
|
15
|
+
}
|
|
16
|
+
const definitionFilePath = resolve(process.cwd(), fromEnv);
|
|
17
|
+
if (!existsSync(definitionFilePath)) {
|
|
18
|
+
throw new Error(`Octo definition file not found at "${definitionFilePath}"!`);
|
|
19
|
+
}
|
|
20
|
+
return definitionFilePath;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Boots only the state provider the definition names, without loading a single module.
|
|
24
|
+
*
|
|
25
|
+
* `apply` is a terraform action rather than an octo mode, so it has no reason to compose a model
|
|
26
|
+
* graph - but terraform state is checked out of the state provider and back into it around every
|
|
27
|
+
* terraform command, so the provider still has to be there.
|
|
28
|
+
*/
|
|
29
|
+
export async function bootStateProvider() {
|
|
30
|
+
const definition = new YamlDefinitionUtility(resolveDefinitionFilePath());
|
|
31
|
+
const stateProvider = definition.resolveStateProvider();
|
|
32
|
+
await Container.getInstance().get(StateManagementService, {
|
|
33
|
+
args: [stateProvider.type],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @param quietStdout Keeps **stdout** free of everything but the command's own output. Set by
|
|
38
|
+
* `run-action`, whose stdout is consumed by terraform's `data "external"` as JSON.
|
|
39
|
+
*
|
|
40
|
+
* It does not disable listeners — it routes them to stderr, so that the SDK resource-action path,
|
|
41
|
+
* the only place resource actions actually execute, stays observable.
|
|
42
|
+
*/
|
|
43
|
+
export async function bootOcto({ quietStdout = false } = {}) {
|
|
44
|
+
const definition = new YamlDefinitionUtility(resolveDefinitionFilePath());
|
|
45
|
+
const hooks = await definition.resolveHooks();
|
|
46
|
+
const imports = await definition.resolveImports();
|
|
47
|
+
const listeners = await definition.resolveListeners({ logDestination: quietStdout ? 'stderr' : 'stdout' });
|
|
48
|
+
const modules = definition.resolveModules(imports);
|
|
49
|
+
const stateProvider = definition.resolveStateProvider();
|
|
50
|
+
const tags = definition.resolveTags();
|
|
51
|
+
const terraformOptions = definition.resolveTerraformOptions();
|
|
52
|
+
if (!quietStdout) {
|
|
53
|
+
console.log(chalk.green('Definition file is valid and all modules were successfully imported.'));
|
|
54
|
+
}
|
|
55
|
+
// Initialize.
|
|
56
|
+
const octo = new Octo();
|
|
57
|
+
await octo.initialize(stateProvider.type, listeners.map((l) => ({
|
|
58
|
+
options: {
|
|
59
|
+
args: l.args,
|
|
60
|
+
metadata: l.metadata,
|
|
61
|
+
},
|
|
62
|
+
type: l.type,
|
|
63
|
+
})));
|
|
64
|
+
// Register hooks.
|
|
65
|
+
octo.registerHooks(hooks);
|
|
66
|
+
// Register terraform config + providers.
|
|
67
|
+
octo.registerTerraformConfig({
|
|
68
|
+
minTerraformVersion: terraformOptions.requiredVersion,
|
|
69
|
+
providers: terraformOptions.requiredProviders,
|
|
70
|
+
});
|
|
71
|
+
for (const provider of terraformOptions.providers) {
|
|
72
|
+
octo.registerTerraformProvider(provider.providerType, provider.accountId, provider.regionId, provider.spec, {
|
|
73
|
+
accountName: provider.accountName,
|
|
74
|
+
setRegionAttribute: provider.setRegionAttribute,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Load modules.
|
|
78
|
+
for (const moduleDefinition of modules) {
|
|
79
|
+
octo.loadModule(moduleDefinition.moduleClass, moduleDefinition.moduleId, moduleDefinition.moduleInputs);
|
|
80
|
+
}
|
|
81
|
+
octo.orderModules(modules.map((m) => m.moduleClass));
|
|
82
|
+
// Compose.
|
|
83
|
+
await octo.compose();
|
|
84
|
+
const app = octo.getRootModel();
|
|
85
|
+
// Register tags. A module-scoped tag names a module that only exists once compose has run it.
|
|
86
|
+
octo.registerTags(tags);
|
|
87
|
+
return { app, octo };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Makes the environment survive the trip into terraform's `local-exec`.
|
|
91
|
+
*
|
|
92
|
+
* An external resource shells back out to `octo` from the terraform that terragrunt runs -
|
|
93
|
+
* `run-action` from its `local-exec` provisioner, `get-response` from its `data "external"` - and
|
|
94
|
+
* those commands inherit this process's environment. Two things about it are wrong by default, and
|
|
95
|
+
* both fail only after real infrastructure exists:
|
|
96
|
+
*
|
|
97
|
+
* - **`octo` is a bare binary name**, resolved through `PATH`. Invoking a binary by path -
|
|
98
|
+
* `node_modules/.bin/octo apply` - does not put its directory on `PATH` for child processes, so
|
|
99
|
+
* the callback dies with `octo: command not found`. The generated app runs the flow through
|
|
100
|
+
* package scripts, and `npm run` does put that directory on `PATH`, but running the binary
|
|
101
|
+
* directly is still supported and has to work the same. The project's bin directory is prepended
|
|
102
|
+
* here, and the directory this CLI is running from after it, so a globally installed or linked
|
|
103
|
+
* octo still wins over nothing at all.
|
|
104
|
+
* - **`OCTO_DEFINITION_FILE_PATH` is usually relative** (`octo.yaml` - the package scripts set
|
|
105
|
+
* exactly that), and terraform runs `local-exec` with a terragrunt cache directory as its cwd,
|
|
106
|
+
* where that resolves to nothing. It is made absolute here, against the cwd the user actually
|
|
107
|
+
* invoked from.
|
|
108
|
+
*/
|
|
109
|
+
export function prepareCallbackEnvironment() {
|
|
110
|
+
const definitionFilePath = process.env.OCTO_DEFINITION_FILE_PATH;
|
|
111
|
+
if (definitionFilePath) {
|
|
112
|
+
process.env.OCTO_DEFINITION_FILE_PATH = resolve(process.cwd(), definitionFilePath);
|
|
113
|
+
}
|
|
114
|
+
const binDirectories = [resolve(process.cwd(), 'node_modules', '.bin'), dirname(process.argv[1] ?? '')].filter((directory) => directory && existsSync(directory));
|
|
115
|
+
const pathEntries = (process.env.PATH ?? '').split(delimiter).filter(Boolean);
|
|
116
|
+
process.env.PATH = [...binDirectories.filter((d) => !pathEntries.includes(d)), ...pathEntries].join(delimiter);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Prints an octo error to stderr, including the properties it carries - the diff that matched no
|
|
120
|
+
* action, most of all - which a bare stack trace would hide.
|
|
121
|
+
*/
|
|
122
|
+
export function reportError(error) {
|
|
123
|
+
console.error(chalk.red(error.stack));
|
|
124
|
+
for (const errorProperty of Object.getOwnPropertyNames(error) || []) {
|
|
125
|
+
if (errorProperty !== 'message' && errorProperty !== 'stack') {
|
|
126
|
+
// Serialized rather than interpolated: the properties worth attaching to an octo error are
|
|
127
|
+
// objects - the diff that matched no action, most of all - and `${}` renders those as
|
|
128
|
+
// "[object Object]", which hides the only thing that would identify the node and field.
|
|
129
|
+
const value = error[errorProperty];
|
|
130
|
+
const renderedValue = value !== null && typeof value === 'object' ? JSON.stringify(value, undefined, 2) : String(value);
|
|
131
|
+
console.error(chalk.red(`${errorProperty}: ${renderedValue}`));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const failures = error.failures || [];
|
|
135
|
+
if (failures.length > 0) {
|
|
136
|
+
console.error('\n');
|
|
137
|
+
console.error(chalk.red('FAILURES'));
|
|
138
|
+
console.error(chalk.red('========'));
|
|
139
|
+
}
|
|
140
|
+
for (let i = 0; i < failures.length; i++) {
|
|
141
|
+
console.error(chalk.red(`${i + 1}. ${failures[i]}`));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=octo.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"octo.utility.js","sourceRoot":"","sources":["../../../src/utilities/octo/octo.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from 'child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Spawns the child processes a build job runs.
|
|
4
|
+
*/
|
|
2
5
|
export declare class ProcessUtility {
|
|
6
|
+
/**
|
|
7
|
+
* Runs a shell command detached, with its output piped to `outputWriter`.
|
|
8
|
+
*
|
|
9
|
+
* @returns The child process, so the caller can watch or kill it.
|
|
10
|
+
*/
|
|
3
11
|
static runDetachedProcess(command: string, options: SpawnOptionsWithoutStdio, outputWriter: any): ChildProcessWithoutNullStreams;
|
|
4
12
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { spawn } from 'child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Spawns the child processes a build job runs.
|
|
4
|
+
*/
|
|
2
5
|
export class ProcessUtility {
|
|
6
|
+
/**
|
|
7
|
+
* Runs a shell command detached, with its output piped to `outputWriter`.
|
|
8
|
+
*
|
|
9
|
+
* @returns The child process, so the caller can watch or kill it.
|
|
10
|
+
*/
|
|
3
11
|
static runDetachedProcess(command, options, outputWriter) {
|
|
4
12
|
options = options || {};
|
|
5
13
|
options.detached = true;
|