@quadnix/octo-build 0.0.17 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +117 -8
- package/dist/commands/apply/apply.command.d.ts +25 -0
- package/dist/commands/apply/apply.command.js +130 -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 +23 -0
- package/dist/commands/commit/commit.command.js +81 -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 +72 -16
- 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 +73 -14
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/gitignore.ejs +14 -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 +28 -16
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/octo.yaml.ejs +25 -3
- 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 +41 -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 +16 -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 +18 -0
- package/dist/commands/lock/lock.command.js +31 -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 +40 -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 +35 -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 +62 -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 +108 -27
- package/dist/utilities/definition/yaml/yaml-definition.utility.d.ts +103 -13
- package/dist/utilities/definition/yaml/yaml-definition.utility.js +215 -68
- package/dist/utilities/definition/yaml/yaml-definition.utility.js.map +1 -1
- package/dist/utilities/octo/octo.utility.d.ts +65 -0
- package/dist/utilities/octo/octo.utility.js +178 -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 +11 -8
- 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 -96
- 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
package/README.md
CHANGED
|
@@ -1,13 +1,122 @@
|
|
|
1
1
|
# Octo
|
|
2
|
-
http://octo.quadnix.com/
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
Infrastructure as code written as intent: you describe an app and what it needs, modules turn that
|
|
4
|
+
into Terraform, and your own Terragrunt applies it. Users start at
|
|
5
|
+
[octo.quadnix.com](https://octo.quadnix.com/).
|
|
5
6
|
|
|
6
|
-
>
|
|
7
|
-
> This library is still under development and is currently in version `0.x.x`.
|
|
8
|
-
> We plan to release version `1.x.x` when it is deemed ready for production use.
|
|
7
|
+
> Octo is in `0.x`. Version `1.x` will mark it ready for production.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
**This README is a set of procedures for working on the repository.** `docs/ARCHITECTURE.md`
|
|
10
|
+
explains what exists, and `docs/CODING-STANDARDS.md` how to add to it.
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
Requires Node 20 or newer, Terraform or OpenTofu 1.6 or newer, and Terragrunt 0.78 or newer. The
|
|
13
|
+
integration suites also need Docker, and the e2e suites AWS credentials.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## A — Set up this machine
|
|
18
|
+
|
|
19
|
+
Once.
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
corepack enable
|
|
23
|
+
pnpm install
|
|
24
|
+
pnpm run prepare
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`prepare` installs the pre-commit hook, which runs the format check, lint, the build with its type
|
|
28
|
+
check, the circular-dependency check, the secrets spec and the docs code-block check.
|
|
29
|
+
|
|
30
|
+
## B — Build, lint and test
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
pnpm run build
|
|
34
|
+
pnpm run lint
|
|
35
|
+
pnpm test
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`octo-aws-cdk`, `octo-event-listeners`, `octo-build` and `octo-templates` import `octo` from its
|
|
39
|
+
`dist`, and `octo-templates` imports `octo-aws-cdk` the same way. **Rebuild what you changed before
|
|
40
|
+
testing what depends on it**, or the suite runs against the old code and still passes.
|
|
41
|
+
|
|
42
|
+
`pnpm run build` also type-checks every package, tests included, through each package's
|
|
43
|
+
`check:types`.
|
|
44
|
+
|
|
45
|
+
`pnpm run format` writes what `pnpm run format:check` checks. Lint does not check formatting.
|
|
46
|
+
|
|
47
|
+
`pnpm run lint:fix` sorts imports, members and keys. A flag passed through `pnpm run` is written
|
|
48
|
+
without `--`: pnpm forwards the separator, and the script then drops the flag.
|
|
49
|
+
|
|
50
|
+
## C — Run integration tests
|
|
51
|
+
|
|
52
|
+
Integration specs run real Terraform; `octo-templates`' start LocalStack in Docker.
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
pnpm run test:integration
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## D — Run an e2e suite
|
|
59
|
+
|
|
60
|
+
**Every e2e suite reaches a live AWS account.** `octo-aws-cdk`'s plan and apply nothing;
|
|
61
|
+
`octo-templates`' create real resources and tear them down.
|
|
62
|
+
|
|
63
|
+
1. Copy the `.env.defaults` beside the suite to `.env` and fill in real values. `.env` is ignored.
|
|
64
|
+
2. Build the packages the suite imports:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
npx nx run-many -t build --projects=octo,octo-event-listeners,octo-aws-cdk
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
3. Run one spec, by path, from its package:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
cd packages/octo-templates
|
|
74
|
+
NODE_OPTIONS=--experimental-vm-modules npx jest --runTestsByPath src/<template>/main.e2e-spec.ts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Never `pnpm run test:e2e` — it runs every suite live at once. Never combine `-u` with `-t`: jest then
|
|
78
|
+
deletes the snapshots of every test it skipped. A template's own `README.md`, where it has one,
|
|
79
|
+
holds what is particular to it.
|
|
80
|
+
|
|
81
|
+
## E — Work in a worktree
|
|
82
|
+
|
|
83
|
+
For a large change or a hands-free agent run:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
git worktree add ../ai-worktrees/octo-worktree-<branch> -b ai/<branch>
|
|
87
|
+
WORKTREE=../ai-worktrees/octo-worktree-<branch>
|
|
88
|
+
find . -maxdepth 4 -name node_modules -type d ! -path "*/node_modules/*/node_modules" | \
|
|
89
|
+
while read src; do
|
|
90
|
+
mkdir -p "$WORKTREE/$(dirname $src)"
|
|
91
|
+
ln -s "$(pwd)/$src" "$WORKTREE/$src"
|
|
92
|
+
done
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The symlinks let Nx and Jest resolve packages. Run lint and tests from inside the worktree.
|
|
96
|
+
|
|
97
|
+
## F — Release
|
|
98
|
+
|
|
99
|
+
1. Merge to `main` with PR titles per `.github/jobs/validate-pr-title.job.sh`. The commit type sets
|
|
100
|
+
the bump: `chore` releases nothing.
|
|
101
|
+
2. Run the **Manual Release** workflow on `main`. It versions every changed package, tags, writes
|
|
102
|
+
the changelog, and publishes to npm.
|
|
103
|
+
|
|
104
|
+
## Environment variables
|
|
105
|
+
|
|
106
|
+
Everything outside the code that governs how this repository behaves. A suite's `.env` is read
|
|
107
|
+
through `env-smart`, falling back to the `.env.defaults` beside it.
|
|
108
|
+
|
|
109
|
+
| Variable | Set by | What it does |
|
|
110
|
+
|-----------------------------------------------------------------------------------------------------|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
111
|
+
| `AWS_ACCOUNT_ID` | a suite's `.env` | The account every e2e suite plans or applies into. |
|
|
112
|
+
| `AWS_REGION_ID` | `packages/octo-aws-cdk/test/.env` | The region the module e2es plan into. Template suites hardcode `us-east-1`. |
|
|
113
|
+
| `OCTO_DEFINITION_FILE_PATH` | the user, or a `create-app` project's scripts | The `octo.yaml` every lifecycle command boots from. `OctoCliUtility` sets it for the CLI-driven template suites. A relative path is resolved once against the working directory, so `run-action` callbacks find it. |
|
|
114
|
+
| `OCTO_JOURNAL_COMMAND_ID` | `JournalEventListener` | The running command's id, set for every process it starts, so a `run-action` that Terraform starts mid-apply names that apply as `parentCommandId` in its journal. |
|
|
115
|
+
| `TF_VAR_OCTO_PROJECT_ROOT` | `TerraformUtility`, unless already set | The working directory, so `terraform.localPath()` paths resolve inside Terragrunt's cache copy of a folder. |
|
|
116
|
+
| `TG_LOG_CUSTOM_FORMAT` | `TerraformUtility`, always | Terragrunt's log line layout, its default without the time, since the journal records when each line arrived. |
|
|
117
|
+
| `TG_LOG_FORMAT` | `TerraformUtility`, always unset | Unset for every Terragrunt process, so it cannot override `TG_LOG_CUSTOM_FORMAT`. |
|
|
118
|
+
| `TG_PROVIDER_CACHE` | `TerraformUtility`, unless already set | `1`, so Terragrunt shares one provider cache across folders. |
|
|
119
|
+
| `TG_TF_PATH` | `TerraformUtility`, from `--terraformBinary` | Which Terraform or OpenTofu binary Terragrunt runs. |
|
|
120
|
+
| `NODE_OPTIONS` | every package's test scripts | `--experimental-vm-modules`, which Jest needs to run ESM. Set it yourself when running `jest` directly. |
|
|
121
|
+
| `OCTO_STAGE`, `OCTO_PHASE`, `OCTO_NAT`, `OCTO_TARGET`, `OCTO_WORK`, `OCTO_CASE`, `OCTO_PROBE_STATE` | you, by hand | Drive the `aws-ecs-server` debugging harnesses; that template's `README.md` describes each. |
|
|
122
|
+
| `GH_TOKEN` | a repository secret | Checkout and push in **Manual Release**, and the tags and GitHub releases `nx release` creates. |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ArgumentsCamelCase, Argv } from 'yargs';
|
|
2
|
+
type ApplyCommandArguments = {
|
|
3
|
+
autoApprove?: boolean;
|
|
4
|
+
lockId: string;
|
|
5
|
+
terraformBinary?: string;
|
|
6
|
+
terragruntBinary?: string;
|
|
7
|
+
terragruntDir: string;
|
|
8
|
+
timeoutInMs?: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Step 3 of the octo lifecycle, and the only one that changes live infrastructure.
|
|
12
|
+
*
|
|
13
|
+
* Unlike generate and validate, this is a terraform action rather than an octo mode - it composes no
|
|
14
|
+
* model graph and reads no model or resource state. What it does need is the state provider, both
|
|
15
|
+
* because terraform's own state is checked out of it before every terraform command and back in
|
|
16
|
+
* after, and because this is one of the two commands that require the app lock. It refuses to run
|
|
17
|
+
* when the plan would destroy anything, unless `--auto-approve` is passed.
|
|
18
|
+
*/
|
|
19
|
+
export declare const applyCommand: {
|
|
20
|
+
builder: (yargs: Argv) => Argv;
|
|
21
|
+
command: string;
|
|
22
|
+
describe: string;
|
|
23
|
+
handler: (argv: ArgumentsCamelCase<ApplyCommandArguments>) => Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import { Container, StateManagementService, TerraformUtility } from '@quadnix/octo';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { OctoUtility } from '../../utilities/octo/octo.utility.js';
|
|
5
|
+
/**
|
|
6
|
+
* Plans the directory and prints anything the apply would destroy, marking each destroy of a resource
|
|
7
|
+
* the last commit recorded as losing data.
|
|
8
|
+
*
|
|
9
|
+
* Returns why the apply must not proceed: something would be destroyed, or a folder would not plan and
|
|
10
|
+
* so nothing can be said about what it would destroy. Returns `undefined` when it may.
|
|
11
|
+
*/
|
|
12
|
+
async function findDestroyRefusal(terraformUtility, stateManagementService, resolvedDir) {
|
|
13
|
+
const { errors, plans } = await terraformUtility.plan(resolvedDir, { json: true });
|
|
14
|
+
if (errors.size > 0) {
|
|
15
|
+
for (const [moduleId, error] of errors.entries()) {
|
|
16
|
+
console.error(chalk.red(`ERROR [${moduleId}] Terraform failed to plan:\n${error}`));
|
|
17
|
+
}
|
|
18
|
+
return ('Cannot check this apply for destroys because the folders above would not plan. ' +
|
|
19
|
+
'Fix them, or pass --auto-approve to apply anyway!');
|
|
20
|
+
}
|
|
21
|
+
const destroys = terraformUtility.findPlannedDestroys(plans);
|
|
22
|
+
if (destroys.length === 0) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
// Find the addresses whose destroy loses data.
|
|
26
|
+
const { userData } = await stateManagementService.getResourceState(stateManagementService.actualResourceStateFileName);
|
|
27
|
+
const dataLossAddresses = new Set((userData.terraformResources ?? [])
|
|
28
|
+
.filter((mapping) => mapping.destroyLosesData)
|
|
29
|
+
.flatMap((mapping) => mapping.terraformAddresses.map((address) => `${mapping.moduleId} ${address}`)));
|
|
30
|
+
console.error(chalk.red('This apply would DESTROY:'));
|
|
31
|
+
for (const destroy of destroys.sort((a, b) => a.address.localeCompare(b.address))) {
|
|
32
|
+
const dataLoss = dataLossAddresses.has(`${destroy.moduleId} ${destroy.address}`)
|
|
33
|
+
? ' - the data it holds is lost with it'
|
|
34
|
+
: '';
|
|
35
|
+
console.error(chalk.red(` [${destroy.moduleId}] ${destroy.address} (${destroy.tfActions.join(', ')})${dataLoss}`));
|
|
36
|
+
}
|
|
37
|
+
return ('Refusing to apply. Run "octo validate" to see why each of these is being destroyed, ' +
|
|
38
|
+
'then re-run with --auto-approve to proceed!');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Step 3 of the octo lifecycle, and the only one that changes live infrastructure.
|
|
42
|
+
*
|
|
43
|
+
* Unlike generate and validate, this is a terraform action rather than an octo mode - it composes no
|
|
44
|
+
* model graph and reads no model or resource state. What it does need is the state provider, both
|
|
45
|
+
* because terraform's own state is checked out of it before every terraform command and back in
|
|
46
|
+
* after, and because this is one of the two commands that require the app lock. It refuses to run
|
|
47
|
+
* when the plan would destroy anything, unless `--auto-approve` is passed.
|
|
48
|
+
*/
|
|
49
|
+
export const applyCommand = {
|
|
50
|
+
builder: (yargs) => {
|
|
51
|
+
return yargs
|
|
52
|
+
.option('terragruntDir', {
|
|
53
|
+
demandOption: true,
|
|
54
|
+
description: 'The generated Terragrunt directory to apply.',
|
|
55
|
+
type: 'string',
|
|
56
|
+
})
|
|
57
|
+
.option('lockId', {
|
|
58
|
+
demandOption: true,
|
|
59
|
+
description: 'The app lock ID from `octo lock`. Applying without the lock is refused.',
|
|
60
|
+
type: 'string',
|
|
61
|
+
})
|
|
62
|
+
.option('autoApprove', {
|
|
63
|
+
default: false,
|
|
64
|
+
demandOption: false,
|
|
65
|
+
description: 'Apply without first checking the plan for destroys. Required to destroy anything.',
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
})
|
|
68
|
+
.option('terraformBinary', {
|
|
69
|
+
demandOption: false,
|
|
70
|
+
description: 'Override the terraform/tofu binary terragrunt should invoke (sets TG_TF_PATH).',
|
|
71
|
+
type: 'string',
|
|
72
|
+
})
|
|
73
|
+
.option('terragruntBinary', {
|
|
74
|
+
demandOption: false,
|
|
75
|
+
description: 'Override the terragrunt binary/path to invoke.',
|
|
76
|
+
type: 'string',
|
|
77
|
+
})
|
|
78
|
+
.option('timeoutInMs', {
|
|
79
|
+
demandOption: false,
|
|
80
|
+
description: 'Override the per-command timeout, in milliseconds.',
|
|
81
|
+
type: 'number',
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
command: 'apply',
|
|
85
|
+
describe: 'Step 3: apply the generated Terraform in the Terragrunt directory.',
|
|
86
|
+
handler: async (argv) => {
|
|
87
|
+
const { autoApprove, lockId, terraformBinary, terragruntBinary, terragruntDir, timeoutInMs } = argv;
|
|
88
|
+
const resolvedDir = resolve(process.cwd(), terragruntDir);
|
|
89
|
+
OctoUtility.prepareCallbackEnvironment();
|
|
90
|
+
await OctoUtility.runCommand('apply', async () => {
|
|
91
|
+
const { stateCheckInIntervalInMs } = await OctoUtility.bootStateProvider();
|
|
92
|
+
// The lock is verified before anything is planned, so a run without it fails having done
|
|
93
|
+
// nothing. It is released by `octo commit`, not here - the apply is the middle of a run.
|
|
94
|
+
const stateManagementService = await Container.getInstance().get(StateManagementService);
|
|
95
|
+
if (!(await stateManagementService.isAppLocked(lockId))) {
|
|
96
|
+
throw new Error('App is not locked! Run "octo lock" first.');
|
|
97
|
+
}
|
|
98
|
+
const terraformUtility = await Container.getInstance().get(TerraformUtility, {
|
|
99
|
+
args: [{ stateCheckInIntervalInMs, terraformBinary, terragruntBinary, timeoutInMs }, true],
|
|
100
|
+
});
|
|
101
|
+
// The underlying apply runs `-auto-approve` and validate is optional, so without an explicit
|
|
102
|
+
// opt-in, plan first and refuse to destroy anything the user has not been shown. What is at
|
|
103
|
+
// stake is the data inside a resource terraform recreates; octo's own state stays consistent
|
|
104
|
+
// either way.
|
|
105
|
+
const refusal = autoApprove
|
|
106
|
+
? undefined
|
|
107
|
+
: await findDestroyRefusal(terraformUtility, stateManagementService, resolvedDir);
|
|
108
|
+
if (refusal !== undefined) {
|
|
109
|
+
throw new Error(refusal);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Terragrunt's output goes out as events as it is written, which the listeners print and record.
|
|
113
|
+
try {
|
|
114
|
+
await terraformUtility.apply(resolvedDir);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
// An apply that got this far may have built some of what was asked for, and only a commit
|
|
118
|
+
// records that. The rule belongs here rather than in every pipeline that calls this: the
|
|
119
|
+
// apply is what knows it failed, and it is the one step after which the choice is not
|
|
120
|
+
// obvious.
|
|
121
|
+
console.error(chalk.red(`\nThis apply may have built part of what you asked for. Run "octo commit --partial ` +
|
|
122
|
+
`--terragruntDir ${terragruntDir} --lockId ${lockId}" to record that and release the lock, then fix ` +
|
|
123
|
+
'what failed and run again.'));
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=apply.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.command.js","sourceRoot":"","sources":["../../../src/commands/apply/apply.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { applyCommand } from './apply.command.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -5,10 +5,10 @@ export declare const buildCommand: {
|
|
|
5
5
|
describe: string;
|
|
6
6
|
handler: (argv: ArgumentsCamelCase<{
|
|
7
7
|
buildFilePath: string;
|
|
8
|
-
sourcePath: string;
|
|
9
8
|
concurrency: number;
|
|
10
9
|
dryRun: boolean;
|
|
11
10
|
logsDir: string;
|
|
11
|
+
sourcePath: string;
|
|
12
12
|
timeout: number;
|
|
13
13
|
}>) => Promise<void>;
|
|
14
14
|
};
|
|
@@ -59,7 +59,7 @@ export const buildCommand = {
|
|
|
59
59
|
logsDir = !logsDir || logsDir.toLowerCase() === 'false' ? undefined : resolve(logsDir);
|
|
60
60
|
// Ensure build file exists.
|
|
61
61
|
if (!existsSync(buildFilePath)) {
|
|
62
|
-
console.
|
|
62
|
+
console.error(chalk.red('Cannot find build file: ' + buildFilePath));
|
|
63
63
|
process.exit(1);
|
|
64
64
|
}
|
|
65
65
|
// Ensure logsDir exists, and is writable.
|
|
@@ -69,7 +69,7 @@ export const buildCommand = {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
catch (error) {
|
|
72
|
-
console.
|
|
72
|
+
console.error(chalk.red("Logs directory doesn't exist, or is not writable: " + logsDir));
|
|
73
73
|
process.exit(1);
|
|
74
74
|
}
|
|
75
75
|
// Prepare args.
|
|
@@ -87,7 +87,7 @@ export const buildCommand = {
|
|
|
87
87
|
json = load(readFileSync(buildFilePath, 'utf-8'));
|
|
88
88
|
}
|
|
89
89
|
catch (error) {
|
|
90
|
-
console.
|
|
90
|
+
console.error(chalk.red('Unable to parse build file: ' + error.message));
|
|
91
91
|
throw error;
|
|
92
92
|
}
|
|
93
93
|
const buildConfiguration = BuildFileParser.parse(json);
|
|
@@ -97,7 +97,7 @@ export const buildCommand = {
|
|
|
97
97
|
console.log(chalk.green('Success'));
|
|
98
98
|
}
|
|
99
99
|
catch (error) {
|
|
100
|
-
console.
|
|
100
|
+
console.error(chalk.red(error));
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../src/commands/build/build.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,CAAC,KAAW,EAAQ,EAAE;QAC7B,OAAO,KAAK;aACT,MAAM,CAAC,eAAe,EAAE;YACvB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,gDAAgD;YAC7D,IAAI,EAAE,QAAQ;SACf,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YACpB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,GAAG;YACZ,WAAW,EAAE,uCAAuC;YACpD,IAAI,EAAE,QAAQ;SACf,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,uCAAuC;YACpD,IAAI,EAAE,QAAQ;SACf,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,8DAA8D;YAC3E,IAAI,EAAE,SAAS;SAChB,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,2DAA2D;YACxE,IAAI,EAAE,QAAQ;SACf,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,uEAAuE;YACpF,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,yCAAyC;IACnD,OAAO,EAAE,KAAK,EACZ,IAOE,EACa,EAAE;QACjB,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACzC,IAAI,OAAO,GAAuB,IAAI,CAAC,OAAO,CAAC;QAC/C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE9C,sBAAsB;QACtB,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvF,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../src/commands/build/build.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,38 @@
|
|
|
1
1
|
import type { ChildProcessWithoutNullStreams } from 'child_process';
|
|
2
2
|
import type { IBuildConfiguration } from './models/build-configuration.interface.js';
|
|
3
3
|
import type { IRunArguments } from './models/run-arguments.interface.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Runs the jobs of a `build.yml`, respecting their dependencies and the concurrency limit.
|
|
9
|
+
*/
|
|
4
10
|
export declare class Main {
|
|
5
11
|
private readonly args;
|
|
6
12
|
private readonly configuration;
|
|
13
|
+
/**
|
|
14
|
+
* @param args The parsed CLI arguments.
|
|
15
|
+
* @param configuration The parsed build file.
|
|
16
|
+
*/
|
|
7
17
|
constructor(args: IRunArguments, configuration: IBuildConfiguration);
|
|
18
|
+
/**
|
|
19
|
+
* Spawns one command.
|
|
20
|
+
*
|
|
21
|
+
* @returns The child process, and a promise that settles when it exits - rejecting on a non-zero
|
|
22
|
+
* exit code.
|
|
23
|
+
*/
|
|
8
24
|
runCommand(command: string, options: {
|
|
9
25
|
env: {
|
|
10
26
|
[key: string]: string;
|
|
11
27
|
};
|
|
12
28
|
sourcePath: string;
|
|
13
29
|
}): [ChildProcessWithoutNullStreams, Promise<void>];
|
|
30
|
+
/**
|
|
31
|
+
* Starts every job, each waiting on the jobs it depends on, and no more than `concurrency` at once.
|
|
32
|
+
*/
|
|
14
33
|
scheduleJobs(): Promise<void>[];
|
|
34
|
+
/**
|
|
35
|
+
* Runs the whole build, rejecting on the first job that fails or when the timeout elapses.
|
|
36
|
+
*/
|
|
15
37
|
start(): Promise<void>;
|
|
16
38
|
}
|
|
@@ -3,11 +3,27 @@ import { join, resolve } from 'path';
|
|
|
3
3
|
import pLimit from 'p-limit';
|
|
4
4
|
import { ProcessUtility } from '../../utilities/process/process.utility.js';
|
|
5
5
|
import { StreamManager } from './streams/stream-manager.js';
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Runs the jobs of a `build.yml`, respecting their dependencies and the concurrency limit.
|
|
11
|
+
*/
|
|
6
12
|
export class Main {
|
|
13
|
+
/**
|
|
14
|
+
* @param args The parsed CLI arguments.
|
|
15
|
+
* @param configuration The parsed build file.
|
|
16
|
+
*/
|
|
7
17
|
constructor(args, configuration) {
|
|
8
18
|
this.args = args;
|
|
9
19
|
this.configuration = configuration;
|
|
10
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Spawns one command.
|
|
23
|
+
*
|
|
24
|
+
* @returns The child process, and a promise that settles when it exits - rejecting on a non-zero
|
|
25
|
+
* exit code.
|
|
26
|
+
*/
|
|
11
27
|
runCommand(command, options) {
|
|
12
28
|
const spawnProcessOptions = { cwd: options.sourcePath, env: options.env, shell: true };
|
|
13
29
|
const runner = ProcessUtility.runDetachedProcess(command, spawnProcessOptions, 'pipe');
|
|
@@ -33,6 +49,9 @@ export class Main {
|
|
|
33
49
|
});
|
|
34
50
|
return [runner, promiseToFinishCommand];
|
|
35
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Starts every job, each waiting on the jobs it depends on, and no more than `concurrency` at once.
|
|
54
|
+
*/
|
|
36
55
|
scheduleJobs() {
|
|
37
56
|
const streamManager = new StreamManager();
|
|
38
57
|
const timestamp = Date.now();
|
|
@@ -102,6 +121,9 @@ export class Main {
|
|
|
102
121
|
}
|
|
103
122
|
return Object.values(jobPromises);
|
|
104
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Runs the whole build, rejecting on the first job that fails or when the timeout elapses.
|
|
126
|
+
*/
|
|
105
127
|
start() {
|
|
106
128
|
return new Promise(async (resolve, reject) => {
|
|
107
129
|
const timeout = this.args.timeout > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/commands/build/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/commands/build/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { IBuildConfiguration } from '../models/build-configuration.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reads a `build.yml` into the configuration {@link Main} runs.
|
|
4
|
+
*/
|
|
2
5
|
export declare class BuildFileParser {
|
|
6
|
+
/**
|
|
7
|
+
* @throws If a job names a dependency that does not exist, or the jobs form a cycle.
|
|
8
|
+
*/
|
|
3
9
|
static parse(content: any): IBuildConfiguration;
|
|
4
10
|
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a `build.yml` into the configuration {@link Main} runs.
|
|
3
|
+
*/
|
|
1
4
|
export class BuildFileParser {
|
|
5
|
+
/**
|
|
6
|
+
* @throws If a job names a dependency that does not exist, or the jobs form a cycle.
|
|
7
|
+
*/
|
|
2
8
|
static parse(content) {
|
|
3
9
|
const jobs = {};
|
|
4
10
|
for (const jobName of Object.keys(content?.jobs || {})) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-file.parser.js","sourceRoot":"","sources":["../../../../src/commands/build/parsers/build-file.parser.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,OAAY;QACvB,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;gBAC9B,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,OAAO;gBAC9C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;YACzB,GAAG,EACD,OAAO,EAAE,GAAG,EAAE,SAAS;gBACvB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ;gBACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;gBACvB,CAAC,CAAC,EAAE;YACR,IAAI;SACL,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"build-file.parser.js","sourceRoot":"","sources":["../../../../src/commands/build/parsers/build-file.parser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAY;QACvB,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;gBAC9B,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,OAAO;gBAC9C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;YACzB,GAAG,EACD,OAAO,EAAE,GAAG,EAAE,SAAS;gBACvB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ;gBACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;gBACvB,CAAC,CAAC,EAAE;YACR,IAAI;SACL,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { ChildProcessWithoutNullStreams } from 'child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Fans each job's output to the terminal, and to a per-job log file when one was asked for.
|
|
4
|
+
*/
|
|
2
5
|
export declare class StreamManager {
|
|
3
6
|
private colors;
|
|
7
|
+
/**
|
|
8
|
+
* Attaches to a running job's output.
|
|
9
|
+
*/
|
|
4
10
|
registerStream(jobName: string, stream: ChildProcessWithoutNullStreams, options: {
|
|
5
11
|
logsPathPrefix?: string;
|
|
6
12
|
}): void;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createWriteStream } from 'fs';
|
|
2
2
|
import { join, resolve } from 'path';
|
|
3
3
|
import chalk, {} from 'chalk';
|
|
4
|
+
/**
|
|
5
|
+
* Fans each job's output to the terminal, and to a per-job log file when one was asked for.
|
|
6
|
+
*/
|
|
4
7
|
export class StreamManager {
|
|
5
8
|
constructor() {
|
|
6
9
|
this.colors = {
|
|
@@ -11,6 +14,9 @@ export class StreamManager {
|
|
|
11
14
|
YELLOW: chalk.yellow,
|
|
12
15
|
};
|
|
13
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Attaches to a running job's output.
|
|
19
|
+
*/
|
|
14
20
|
registerStream(jobName, stream, options) {
|
|
15
21
|
const colorKeys = Object.keys(this.colors);
|
|
16
22
|
const randomColor = this.colors[colorKeys[(colorKeys.length * Math.random()) << 0]];
|
|
@@ -18,7 +24,7 @@ export class StreamManager {
|
|
|
18
24
|
console.log(randomColor(data.toString()));
|
|
19
25
|
});
|
|
20
26
|
stream.stderr.on('error', (error) => {
|
|
21
|
-
console.
|
|
27
|
+
console.error(chalk.red(error));
|
|
22
28
|
});
|
|
23
29
|
stream.on('close', () => {
|
|
24
30
|
stream.removeAllListeners();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-manager.js","sourceRoot":"","sources":["../../../../src/commands/build/streams/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,EAAsB,MAAM,OAAO,CAAC;AAElD,MAAM,OAAO,aAAa;IAA1B;QACU,WAAM,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-manager.js","sourceRoot":"","sources":["../../../../src/commands/build/streams/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,EAAsB,MAAM,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACU,WAAM,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IA2BJ,CAAC;IAzBC;;OAEG;IACH,cAAc,CAAC,OAAe,EAAE,MAAsC,EAAE,OAAoC;QAC1G,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC,EAAE;gBAC7F,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ArgumentsCamelCase, Argv } from 'yargs';
|
|
2
|
+
type CommitCommandArguments = {
|
|
3
|
+
lockId: string;
|
|
4
|
+
partial?: boolean;
|
|
5
|
+
terraformBinary?: string;
|
|
6
|
+
terragruntBinary?: string;
|
|
7
|
+
terragruntDir: string;
|
|
8
|
+
timeoutInMs?: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Step 4 of the octo lifecycle. See `Octo.commit()`.
|
|
12
|
+
*
|
|
13
|
+
* This is the command that ends a run, so a commit that succeeds releases the app lock. One that
|
|
14
|
+
* fails keeps it, and is run again with the same lock ID. Octo never unlocks on its own; the lock is
|
|
15
|
+
* the CLI's to take and to drop.
|
|
16
|
+
*/
|
|
17
|
+
export declare const commitCommand: {
|
|
18
|
+
builder: (yargs: Argv) => Argv;
|
|
19
|
+
command: string;
|
|
20
|
+
describe: string;
|
|
21
|
+
handler: (argv: ArgumentsCamelCase<CommitCommandArguments>) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|