@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.
Files changed (199) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +25 -3
  3. package/dist/commands/apply/apply.command.d.ts +25 -0
  4. package/dist/commands/apply/apply.command.js +136 -0
  5. package/dist/commands/apply/apply.command.js.map +1 -0
  6. package/dist/commands/apply/index.d.ts +1 -0
  7. package/dist/commands/apply/index.js +2 -0
  8. package/dist/commands/apply/index.js.map +1 -0
  9. package/dist/commands/build/build.command.d.ts +1 -1
  10. package/dist/commands/build/build.command.js +4 -4
  11. package/dist/commands/build/build.command.js.map +1 -1
  12. package/dist/commands/build/main.d.ts +22 -0
  13. package/dist/commands/build/main.js +22 -0
  14. package/dist/commands/build/main.js.map +1 -1
  15. package/dist/commands/build/parsers/build-file.parser.d.ts +6 -0
  16. package/dist/commands/build/parsers/build-file.parser.js +6 -0
  17. package/dist/commands/build/parsers/build-file.parser.js.map +1 -1
  18. package/dist/commands/build/streams/stream-manager.d.ts +6 -0
  19. package/dist/commands/build/streams/stream-manager.js +7 -1
  20. package/dist/commands/build/streams/stream-manager.js.map +1 -1
  21. package/dist/commands/commit/commit.command.d.ts +22 -0
  22. package/dist/commands/commit/commit.command.js +94 -0
  23. package/dist/commands/commit/commit.command.js.map +1 -0
  24. package/dist/commands/commit/index.d.ts +1 -0
  25. package/dist/commands/commit/index.js +2 -0
  26. package/dist/commands/commit/index.js.map +1 -0
  27. package/dist/commands/create-anchor/create-anchor.command.js +1 -1
  28. package/dist/commands/create-anchor/create-anchor.command.js.map +1 -1
  29. package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.d.ts +18 -3
  30. package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.js +29 -11
  31. package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/index.js.map +1 -1
  32. package/dist/commands/create-anchor/generator-octo-anchor-template/generators/app/templates/anchors/anchor/anchor.schema.ts.ejs +9 -1
  33. package/dist/commands/create-app/create-app.command.d.ts +1 -1
  34. package/dist/commands/create-app/create-app.command.js +7 -3
  35. package/dist/commands/create-app/create-app.command.js.map +1 -1
  36. package/dist/commands/create-app/generator-octo-app-template/generators/app/index.d.ts +17 -1
  37. package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js +60 -18
  38. package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js.map +1 -1
  39. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/README.md.ejs +60 -10
  40. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/gitignore.ejs +13 -0
  41. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/index.ts.ejs +19 -0
  42. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/package.json.ejs +9 -1
  43. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-dynamodb-service/octo.yaml.ejs +111 -0
  44. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/octo.yaml.ejs +198 -0
  45. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/octo.yaml.ejs +14 -0
  46. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/tsconfig.json.ejs +0 -3
  47. package/dist/commands/{create-resource/create-resource.command.d.ts → create-external-resource/create-external-resource.command.d.ts} +1 -1
  48. package/dist/commands/create-external-resource/create-external-resource.command.js +64 -0
  49. package/dist/commands/create-external-resource/create-external-resource.command.js.map +1 -0
  50. package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/index.d.ts +17 -2
  51. package/dist/commands/{create-resource/generator-octo-resource-template → create-external-resource/generator-octo-external-resource-template}/generators/app/index.js +36 -35
  52. package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/index.js.map +1 -0
  53. 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
  54. 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
  55. package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/templates/resources/resource/actions/update.resource.action.ts.ejs +63 -0
  56. 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
  57. package/dist/commands/create-external-resource/generator-octo-external-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +28 -0
  58. package/dist/commands/create-external-resource/index.d.ts +1 -0
  59. package/dist/commands/create-external-resource/index.js +2 -0
  60. package/dist/commands/create-external-resource/index.js.map +1 -0
  61. package/dist/commands/create-model/create-model.command.js +1 -1
  62. package/dist/commands/create-model/create-model.command.js.map +1 -1
  63. package/dist/commands/create-model/generator-octo-model-template/generators/app/index.d.ts +17 -2
  64. package/dist/commands/create-model/generator-octo-model-template/generators/app/index.js +26 -9
  65. package/dist/commands/create-model/generator-octo-model-template/generators/app/index.js.map +1 -1
  66. package/dist/commands/create-model/generator-octo-model-template/generators/app/templates/models/model/model.ts.ejs +3 -1
  67. package/dist/commands/create-model/generator-octo-model-template/generators/app/templates/models/model/schema.ts.ejs +6 -1
  68. package/dist/commands/create-module/create-module.command.js +1 -1
  69. package/dist/commands/create-module/create-module.command.js.map +1 -1
  70. package/dist/commands/create-module/generator-octo-module-template/generators/app/index.d.ts +17 -2
  71. package/dist/commands/create-module/generator-octo-module-template/generators/app/index.js +27 -10
  72. package/dist/commands/create-module/generator-octo-module-template/generators/app/index.js.map +1 -1
  73. package/dist/commands/create-overlay/create-overlay.command.js +4 -3
  74. package/dist/commands/create-overlay/create-overlay.command.js.map +1 -1
  75. package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.d.ts +17 -2
  76. package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.js +26 -9
  77. package/dist/commands/create-overlay/generator-octo-overlay-template/generators/app/index.js.map +1 -1
  78. package/dist/commands/{create-cdk/create-cdk.command.d.ts → create-terraform-resource/create-terraform-resource.command.d.ts} +3 -3
  79. package/dist/commands/{create-resource/create-resource.command.js → create-terraform-resource/create-terraform-resource.command.js} +17 -11
  80. package/dist/commands/create-terraform-resource/create-terraform-resource.command.js.map +1 -0
  81. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.d.ts +25 -0
  82. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.js +71 -0
  83. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/index.js.map +1 -0
  84. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/index.schema.ts.ejs +43 -0
  85. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/index.ts.ejs +1 -0
  86. package/dist/commands/create-terraform-resource/generator-octo-terraform-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +83 -0
  87. package/dist/commands/create-terraform-resource/index.d.ts +1 -0
  88. package/dist/commands/create-terraform-resource/index.js +2 -0
  89. package/dist/commands/create-terraform-resource/index.js.map +1 -0
  90. package/dist/commands/generate/generate.command.d.ts +14 -0
  91. package/dist/commands/generate/generate.command.js +35 -0
  92. package/dist/commands/generate/generate.command.js.map +1 -0
  93. package/dist/commands/generate/index.d.ts +1 -0
  94. package/dist/commands/generate/index.js +2 -0
  95. package/dist/commands/generate/index.js.map +1 -0
  96. package/dist/commands/get-response/get-response.command.d.ts +18 -0
  97. package/dist/commands/get-response/get-response.command.js +39 -0
  98. package/dist/commands/get-response/get-response.command.js.map +1 -0
  99. package/dist/commands/get-response/index.d.ts +1 -0
  100. package/dist/commands/get-response/index.js +2 -0
  101. package/dist/commands/get-response/index.js.map +1 -0
  102. package/dist/commands/lock/index.d.ts +1 -0
  103. package/dist/commands/lock/index.js +2 -0
  104. package/dist/commands/lock/index.js.map +1 -0
  105. package/dist/commands/lock/lock.command.d.ts +13 -0
  106. package/dist/commands/lock/lock.command.js +28 -0
  107. package/dist/commands/lock/lock.command.js.map +1 -0
  108. package/dist/commands/run-action/index.d.ts +1 -0
  109. package/dist/commands/run-action/index.js +2 -0
  110. package/dist/commands/run-action/index.js.map +1 -0
  111. package/dist/commands/run-action/run-action.command.d.ts +12 -0
  112. package/dist/commands/run-action/run-action.command.js +46 -0
  113. package/dist/commands/run-action/run-action.command.js.map +1 -0
  114. package/dist/commands/unlock/index.d.ts +1 -0
  115. package/dist/commands/unlock/index.js +2 -0
  116. package/dist/commands/unlock/index.js.map +1 -0
  117. package/dist/commands/unlock/unlock.command.d.ts +18 -0
  118. package/dist/commands/unlock/unlock.command.js +51 -0
  119. package/dist/commands/unlock/unlock.command.js.map +1 -0
  120. package/dist/commands/validate/index.d.ts +1 -0
  121. package/dist/commands/validate/index.js +2 -0
  122. package/dist/commands/validate/index.js.map +1 -0
  123. package/dist/commands/validate/validate.command.d.ts +17 -0
  124. package/dist/commands/validate/validate.command.js +68 -0
  125. package/dist/commands/validate/validate.command.js.map +1 -0
  126. package/dist/index.js +20 -8
  127. package/dist/index.js.map +1 -1
  128. package/dist/resources/octo-v1.schema.json +86 -19
  129. package/dist/utilities/definition/yaml/yaml-definition.utility.d.ts +98 -10
  130. package/dist/utilities/definition/yaml/yaml-definition.utility.js +197 -66
  131. package/dist/utilities/definition/yaml/yaml-definition.utility.js.map +1 -1
  132. package/dist/utilities/octo/octo.utility.d.ts +48 -0
  133. package/dist/utilities/octo/octo.utility.js +144 -0
  134. package/dist/utilities/octo/octo.utility.js.map +1 -0
  135. package/dist/utilities/process/process.utility.d.ts +8 -0
  136. package/dist/utilities/process/process.utility.js +8 -0
  137. package/dist/utilities/process/process.utility.js.map +1 -1
  138. package/dist/utilities/project-index/project-index.utility.d.ts +27 -0
  139. package/dist/utilities/project-index/project-index.utility.js +71 -0
  140. package/dist/utilities/project-index/project-index.utility.js.map +1 -0
  141. package/dist/utilities/string/string.utility.d.ts +22 -0
  142. package/dist/utilities/string/string.utility.js +27 -0
  143. package/dist/utilities/string/string.utility.js.map +1 -1
  144. package/package.json +9 -8
  145. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/app.config.ts.ejs +0 -23
  146. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/env.ejs +0 -2
  147. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/main.ts.ejs +0 -24
  148. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-ecs-server/module-definitions.ts.ejs +0 -201
  149. package/dist/commands/create-cdk/create-cdk.command.js +0 -70
  150. package/dist/commands/create-cdk/create-cdk.command.js.map +0 -1
  151. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.d.ts +0 -10
  152. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.js +0 -107
  153. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/index.js.map +0 -1
  154. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/README.md.ejs +0 -23
  155. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/eslint.config.js.ejs +0 -337
  156. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/gitignore.ejs +0 -82
  157. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/gitkeep.ejs +0 -0
  158. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/package.json.ejs +0 -57
  159. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/prettierrc.ejs +0 -5
  160. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/anchors/app/app.anchor.schema.ts.ejs +0 -19
  161. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/anchors/app/app.anchor.ts.ejs +0 -17
  162. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/factories/dummy-credentials.factory.ts.ejs +0 -28
  163. 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
  164. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/dummy-app.module.ts.ejs +0 -16
  165. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/index.schema.ts.ejs +0 -10
  166. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/index.ts.ejs +0 -3
  167. 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
  168. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/modules/app/dummy-app/models/app/index.ts.ejs +0 -1
  169. 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
  170. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/http-fetch.resource.ts.ejs +0 -12
  171. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/index.schema.ts.ejs +0 -35
  172. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/resources/http-fetch/index.ts.ejs +0 -3
  173. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/src/utilities/dummy/dummy.utility.ts.ejs +0 -11
  174. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/tsconfig.build.json.ejs +0 -11
  175. package/dist/commands/create-cdk/generator-octo-cdk-template/generators/app/templates/tsconfig.json.ejs +0 -39
  176. package/dist/commands/create-cdk/index.d.ts +0 -1
  177. package/dist/commands/create-cdk/index.js +0 -2
  178. package/dist/commands/create-cdk/index.js.map +0 -1
  179. package/dist/commands/create-resource/create-resource.command.js.map +0 -1
  180. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js.map +0 -1
  181. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/update-tags.resource.action.ts.ejs +0 -86
  182. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/validate.resource.action.ts.ejs +0 -40
  183. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/resource.ts.ejs +0 -12
  184. package/dist/commands/create-resource/index.d.ts +0 -1
  185. package/dist/commands/create-resource/index.js +0 -2
  186. package/dist/commands/create-resource/index.js.map +0 -1
  187. package/dist/commands/run/index.d.ts +0 -1
  188. package/dist/commands/run/index.js +0 -2
  189. package/dist/commands/run/index.js.map +0 -1
  190. package/dist/commands/run/run.command.d.ts +0 -11
  191. package/dist/commands/run/run.command.js +0 -83
  192. package/dist/commands/run/run.command.js.map +0 -1
  193. package/dist/commands/state/index.d.ts +0 -1
  194. package/dist/commands/state/index.js +0 -2
  195. package/dist/commands/state/index.js.map +0 -1
  196. package/dist/commands/state/state.command.d.ts +0 -14
  197. package/dist/commands/state/state.command.js +0 -79
  198. package/dist/commands/state/state.command.js.map +0 -1
  199. /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
- if (typeof value !== 'string') {
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 "${resolvedImport}": ${error?.message || String(error)}`);
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 "${resolvedImport}": ${error?.message || String(error)}`);
103
+ throw new Error(`Failed to import path "${importPath}": ${error?.message || String(error)}`);
104
104
  }
105
105
  }
106
106
  return imports;
107
107
  }
108
- async resolveListeners() {
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
- if (process.env.OCTO_DISABLE_HTML_REPORT_EVENT_LISTENER?.toLowerCase() !== 'true') {
116
- const imported = await import('@quadnix/octo-event-listeners/html-report');
117
- listeners.push({ type: imported.HtmlReportEventListener });
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
- if (process.env.OCTO_DISABLE_LOGGING_EVENT_LISTENER?.toLowerCase() !== 'true') {
122
- const imported = await import('@quadnix/octo-event-listeners/logging');
123
- listeners.push({ type: imported.LoggingEventListener });
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
- resolveTransactionOptions() {
170
- const tx = this.definition.settings.transactionOptions || {};
171
- const options = {
172
- appLockId: undefined,
173
- enableResourceCapture: false,
174
- enableResourceValidation: false,
175
- yieldModelDiffs: tx.yieldModelDiffs || false,
176
- yieldModelTransaction: tx.yieldModelTransaction || false,
177
- yieldResourceDiffs: tx.yieldResourceDiffs || false,
178
- yieldResourceTransaction: tx.yieldResourceTransaction || false,
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
- if (process.env.OCTO_APP_LOCK_ID) {
181
- options.appLockId = process.env.OCTO_APP_LOCK_ID;
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
- if (process.env.OCTO_ENABLE_RESOURCE_CAPTURE) {
184
- options.enableResourceCapture = process.env.OCTO_ENABLE_RESOURCE_CAPTURE.toLowerCase() === 'true';
250
+ const pattern = value.match(/^\$\{env\.(.+)}$/);
251
+ if (!pattern || pattern.length < 2) {
252
+ return value;
185
253
  }
186
- if (process.env.OCTO_ENABLE_RESOURCE_VALIDATION) {
187
- options.enableResourceValidation = process.env.OCTO_ENABLE_RESOURCE_VALIDATION.toLowerCase() === 'true';
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
- if (process.env.OCTO_YIELD_MODEL_DIFFS) {
190
- options.yieldModelDiffs = process.env.OCTO_YIELD_MODEL_DIFFS.toLowerCase() === 'true';
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
- if (process.env.OCTO_YIELD_MODEL_TRANSACTION) {
193
- options.yieldModelTransaction = process.env.OCTO_YIELD_MODEL_TRANSACTION.toLowerCase() === 'true';
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
- if (process.env.OCTO_YIELD_RESOURCE_DIFFS) {
196
- options.yieldResourceDiffs = process.env.OCTO_YIELD_RESOURCE_DIFFS.toLowerCase() === 'true';
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 (process.env.OCTO_YIELD_RESOURCE_TRANSACTION) {
199
- options.yieldResourceTransaction = process.env.OCTO_YIELD_RESOURCE_TRANSACTION.toLowerCase() === 'true';
321
+ if (ancestors.has(value)) {
322
+ throw new Error('Definition holds a value that contains itself!');
200
323
  }
201
- return options;
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;