@quadnix/octo-build 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js +2 -5
- 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 +49 -30
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/package.json.ejs +0 -3
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/octo.yaml.ejs +48 -0
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js +4 -0
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js.map +1 -1
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/add.resource.action.ts.ejs +13 -23
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/delete.resource.action.ts.ejs +3 -21
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/update-tags.resource.action.ts.ejs +7 -16
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/validate.resource.action.ts.ejs +40 -0
- package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/index.ts.ejs +1 -0
- package/dist/commands/run/index.d.ts +1 -0
- package/dist/commands/run/index.js +2 -0
- package/dist/commands/run/index.js.map +1 -0
- package/dist/commands/run/run.command.d.ts +11 -0
- package/dist/commands/run/run.command.js +83 -0
- package/dist/commands/run/run.command.js.map +1 -0
- package/dist/commands/state/index.d.ts +1 -0
- package/dist/commands/state/index.js +2 -0
- package/dist/commands/state/index.js.map +1 -0
- package/dist/commands/state/state.command.d.ts +14 -0
- package/dist/commands/state/state.command.js +79 -0
- package/dist/commands/state/state.command.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/octo-v1.schema.json +170 -0
- package/dist/utilities/definition/yaml/yaml-definition.utility.d.ts +60 -0
- package/dist/utilities/definition/yaml/yaml-definition.utility.js +223 -0
- package/dist/utilities/definition/yaml/yaml-definition.utility.js.map +1 -0
- package/package.json +5 -2
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/app.config.ts.ejs +0 -25
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/env.ejs +0 -5
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/main.ts.ejs +0 -22
- package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/module-definitions.ts.ejs +0 -52
|
@@ -43,8 +43,8 @@ export default class extends Generator {
|
|
|
43
43
|
await this.addDependencies({
|
|
44
44
|
'@quadnix/octo': '0.0.x',
|
|
45
45
|
'@quadnix/octo-aws-cdk': '0.0.x',
|
|
46
|
+
'@quadnix/octo-build': '0.0.x',
|
|
46
47
|
'@quadnix/octo-event-listeners': '0.0.x',
|
|
47
|
-
'env-smart': '^2.3.2',
|
|
48
48
|
});
|
|
49
49
|
await this.addDevDependencies({
|
|
50
50
|
'@eslint/js': '^9.33.0',
|
|
@@ -99,10 +99,7 @@ export default class extends Generator {
|
|
|
99
99
|
this.fs.copyTpl(this.templatePath(`${templatePath}/website/index.html.ejs`), this.destinationPath('website/index.html'), {
|
|
100
100
|
name: this.appName,
|
|
101
101
|
});
|
|
102
|
-
this.fs.copyTpl(this.templatePath(`${templatePath}/
|
|
103
|
-
this.fs.copyTpl(this.templatePath(`${templatePath}/env.ejs`), this.destinationPath('.env'));
|
|
104
|
-
this.fs.copyTpl(this.templatePath(`${templatePath}/main.ts.ejs`), this.destinationPath('src/main.ts'));
|
|
105
|
-
this.fs.copyTpl(this.templatePath(`${templatePath}/module-definitions.ts.ejs`), this.destinationPath('src/module-definitions.ts'));
|
|
102
|
+
this.fs.copyTpl(this.templatePath(`${templatePath}/octo.yaml.ejs`), this.destinationPath('octo.yaml'));
|
|
106
103
|
}
|
|
107
104
|
else {
|
|
108
105
|
throw new Error(`Unsupported app template: ${this.appTemplate}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/create-app/generator-octo-app-template/generators/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,SAAS,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAE/D,MAAM,CAAC,OAAO,MAAO,SAAQ,SAAS;IAKpC,YAAY,IAAc,EAAE,IAAiB;QAC3C,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAElB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7D,sDAAsD;QACtD,IAAI,cAAiC,CAAC;QACtC,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,cAAc,EAAE,WAAW,EAAE,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,cAAc,UAAU,4EAA4E,CACrG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,kDAAkD;QAClD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAErG,oBAAoB;QACpB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QAExF,sBAAsB;QACtB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;YAC3F,WAAW,EAAE,4CAA4C,IAAI,CAAC,OAAO,EAAE;YACvE,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,eAAe,CAAC;YACzB,eAAe,EAAE,OAAO;YACxB,uBAAuB,EAAE,OAAO;YAChC,+BAA+B,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/create-app/generator-octo-app-template/generators/app/index.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/README.md.ejs
CHANGED
|
@@ -11,48 +11,67 @@ npm install
|
|
|
11
11
|
|
|
12
12
|
## Fix me
|
|
13
13
|
Before running the app, ensure,
|
|
14
|
-
-
|
|
14
|
+
- `env` values are appropriately set in `octo.yaml`.
|
|
15
|
+
|
|
16
|
+
## Running the Definition file
|
|
17
|
+
The `octo.yaml` is your Octo definition file.
|
|
18
|
+
It contains all the modules you want to run,
|
|
19
|
+
which will create your infrastructure resources as per the module's instructions.
|
|
20
|
+
|
|
21
|
+
To run the definition file,
|
|
22
|
+
```bash
|
|
23
|
+
# First create a lock.
|
|
24
|
+
node_modules/.bin/octo state lock -d octo.yaml
|
|
25
|
+
|
|
26
|
+
# Then copy the lock output, a random unique string, and run the app with the lock ID.
|
|
27
|
+
OCTO_APP_LOCK_ID=<lock_id> node_modules/.bin/octo run -d octo.yaml
|
|
28
|
+
|
|
29
|
+
# Lastly, unlock the app.
|
|
30
|
+
node_modules/.bin/octo state unlock <lock_id> -d octo.yaml
|
|
31
|
+
```
|
|
15
32
|
|
|
16
33
|
## Development
|
|
34
|
+
The rest of the setup is a TypeScript project for you to get started with developing new modules in Octo quickly.
|
|
35
|
+
You can follow the official documentation to learn more.
|
|
36
|
+
Once you have your custom constructs and modules defined, you can use below commands to build those modules.
|
|
37
|
+
Don't forget to add your new modules to your Octo definition file.
|
|
38
|
+
|
|
17
39
|
```bash
|
|
18
|
-
# Build app. This will compile your TypeScript code.
|
|
19
40
|
npm run build
|
|
20
|
-
|
|
21
|
-
# Run app. This will create the infrastructure defined in your app.
|
|
22
|
-
npm start
|
|
23
41
|
```
|
|
24
42
|
|
|
25
43
|
## Destroy
|
|
44
|
+
Once you have your infrastructure created, and you wish all of them destroyed,
|
|
45
|
+
its as simple as commenting out the necessary modules and re-running the app.
|
|
46
|
+
|
|
26
47
|
### Step 1
|
|
27
|
-
In `
|
|
48
|
+
In `octo.yaml`, comment out all modules except the `app` and `account` modules.
|
|
28
49
|
The app and account modules load AWS credentials to call AWS APIs, hence they remain uncommented.
|
|
29
50
|
|
|
30
|
-
By
|
|
51
|
+
By commenting the `s3-website-service-module` module below,
|
|
31
52
|
you are safely deleting the s3-website resources created by this module.
|
|
32
53
|
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
accountId: config.AWS_ACCOUNT_ID,
|
|
40
|
-
app: stub<App>('${{app-module.model.app}}'),
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
// this.add(AwsS3StaticWebsiteServiceModule, 's3-website-service-module', {
|
|
44
|
-
// account: stub<Account>('${{account-module.model.account}}'),
|
|
45
|
-
// awsRegionId: 'us-east-1',
|
|
46
|
-
// bucketName: config.AWS_S3_WEBSITE_BUCKET_NAME,
|
|
47
|
-
// directoryPath: websiteSourcePath,
|
|
48
|
-
// });
|
|
49
|
-
}
|
|
50
|
-
```
|
|
54
|
+
```yaml
|
|
55
|
+
modules:
|
|
56
|
+
- moduleId: app-module
|
|
57
|
+
moduleClass: SimpleAppModule
|
|
58
|
+
moduleInputs:
|
|
59
|
+
name: aws-s3-website
|
|
51
60
|
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
- moduleId: account-module
|
|
62
|
+
moduleClass: AwsIniAccountModule
|
|
63
|
+
moduleInputs:
|
|
64
|
+
accountId: "${env.AWS_ACCOUNT_ID}"
|
|
65
|
+
app: "${{app-module.model.app}}"
|
|
54
66
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
67
|
+
#- moduleId: s3-website-service-module
|
|
68
|
+
# moduleClass: AwsS3StaticWebsiteServiceModule
|
|
69
|
+
# moduleInputs:
|
|
70
|
+
# account: "${{account-module.model.account}}"
|
|
71
|
+
# awsRegionId: us-east-1
|
|
72
|
+
# bucketName: "${env.AWS_S3_WEBSITE_BUCKET_NAME}"
|
|
73
|
+
# directoryPath: website
|
|
58
74
|
```
|
|
75
|
+
|
|
76
|
+
### Step 2
|
|
77
|
+
Then, simply re-build (if necessary) and run your app again.
|
|
@@ -37,18 +37,15 @@
|
|
|
37
37
|
"octo",
|
|
38
38
|
"typescript"
|
|
39
39
|
],
|
|
40
|
-
"main": "dist/main.js",
|
|
41
40
|
"name": "<%= name %>",
|
|
42
41
|
"private": true,
|
|
43
42
|
"scripts": {
|
|
44
43
|
"build": "rimraf dist && tsc -p tsconfig.build.json",
|
|
45
44
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
46
45
|
"lint": "eslint .",
|
|
47
|
-
"start": "node dist/main.js",
|
|
48
46
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --testRegex=\"\\.spec.ts$\"",
|
|
49
47
|
"test:e2e": "NODE_OPTIONS=--experimental-vm-modules jest --testRegex=\"\\.e2e-spec.ts$\""
|
|
50
48
|
},
|
|
51
49
|
"type": "module",
|
|
52
|
-
"types": "dist/main.d.ts",
|
|
53
50
|
"version": "<%= version %>"
|
|
54
51
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/quadnix/octo/refs/heads/main/packages/octo-build/src/resources/octo-v1.schema.json
|
|
2
|
+
|
|
3
|
+
version: 1
|
|
4
|
+
|
|
5
|
+
env:
|
|
6
|
+
- key: AWS_ACCOUNT_ID
|
|
7
|
+
kind: string
|
|
8
|
+
value: "123456789123"
|
|
9
|
+
- key: AWS_S3_WEBSITE_BUCKET_NAME
|
|
10
|
+
kind: string
|
|
11
|
+
value: my-website-unique-bucket
|
|
12
|
+
|
|
13
|
+
settings:
|
|
14
|
+
listeners:
|
|
15
|
+
- type: HtmlReportEventListener
|
|
16
|
+
- type: LoggingEventListener
|
|
17
|
+
|
|
18
|
+
stateProvider:
|
|
19
|
+
type: LocalStateProvider
|
|
20
|
+
statePath: .octo
|
|
21
|
+
|
|
22
|
+
imports:
|
|
23
|
+
- className: SimpleAppModule
|
|
24
|
+
importPath: "@quadnix/octo-aws-cdk/modules/app/simple-app"
|
|
25
|
+
- className: AwsIniAccountModule
|
|
26
|
+
importPath: "@quadnix/octo-aws-cdk/modules/account/aws-ini-account"
|
|
27
|
+
- className: AwsS3StaticWebsiteServiceModule
|
|
28
|
+
importPath: "@quadnix/octo-aws-cdk/modules/service/aws-s3-static-website-service"
|
|
29
|
+
|
|
30
|
+
modules:
|
|
31
|
+
- moduleId: app-module
|
|
32
|
+
moduleClass: SimpleAppModule
|
|
33
|
+
moduleInputs:
|
|
34
|
+
name: aws-s3-website
|
|
35
|
+
|
|
36
|
+
- moduleId: account-module
|
|
37
|
+
moduleClass: AwsIniAccountModule
|
|
38
|
+
moduleInputs:
|
|
39
|
+
accountId: "${env.AWS_ACCOUNT_ID}"
|
|
40
|
+
app: "${{app-module.model.app}}"
|
|
41
|
+
|
|
42
|
+
- moduleId: s3-website-service-module
|
|
43
|
+
moduleClass: AwsS3StaticWebsiteServiceModule
|
|
44
|
+
moduleInputs:
|
|
45
|
+
account: "${{account-module.model.account}}"
|
|
46
|
+
awsRegionId: us-east-1
|
|
47
|
+
bucketName: "${env.AWS_S3_WEBSITE_BUCKET_NAME}"
|
|
48
|
+
directoryPath: website
|
package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js
CHANGED
|
@@ -59,6 +59,10 @@ export default class extends Generator {
|
|
|
59
59
|
resourceName: this.resourceName,
|
|
60
60
|
resourceNamePascal: StringUtility.toPascalCase(this.resourceName),
|
|
61
61
|
});
|
|
62
|
+
this.fs.copyTpl(this.templatePath('resources/resource/actions/validate.resource.action.ts.ejs'), this.destinationPath('actions', `validate-${this.resourceName}.resource.action.ts`), {
|
|
63
|
+
resourceName: this.resourceName,
|
|
64
|
+
resourceNamePascal: StringUtility.toPascalCase(this.resourceName),
|
|
65
|
+
});
|
|
62
66
|
}
|
|
63
67
|
end() {
|
|
64
68
|
const targetPath = resolve(join(this.cdkRootDir, 'src', 'resources', this.resourceName));
|
package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/create-resource/generator-octo-resource-template/generators/app/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/create-resource/generator-octo-resource-template/generators/app/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,38 +17,28 @@ export class Add<%= resourceNamePascal %>ResourceAction extends ANodeAction impl
|
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
async handle(diff: Diff<<%= resourceNamePascal %>>): Promise
|
|
20
|
+
async handle(diff: Diff<<%= resourceNamePascal %>>): Promise<<%= resourceNamePascal %>Schema['response']> {
|
|
21
21
|
// Get properties.
|
|
22
|
-
const <%=
|
|
23
|
-
const properties = <%=
|
|
24
|
-
const response = <%=
|
|
25
|
-
const tags = <%=
|
|
22
|
+
const <%= resourceName %> = diff.node;
|
|
23
|
+
const properties = <%= resourceName %>.properties;
|
|
24
|
+
const response = <%= resourceName %>.response;
|
|
25
|
+
const tags = <%= resourceName %>.tags;
|
|
26
26
|
|
|
27
27
|
// Fix me: Implement the add resource logic.
|
|
28
28
|
// This is where you would create the actual resource.
|
|
29
29
|
|
|
30
|
-
//
|
|
31
|
-
|
|
30
|
+
// Fix me: Return response properties.
|
|
31
|
+
return response;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
async mock(diff: Diff<<%= resourceNamePascal %>>, capture: Partial<<%= resourceNamePascal %>Schema['response']>): Promise
|
|
34
|
+
async mock(diff: Diff<<%= resourceNamePascal %>>, capture: Partial<<%= resourceNamePascal %>Schema['response']>): Promise<<%= resourceNamePascal %>Schema['response']> {
|
|
35
35
|
// Get properties.
|
|
36
|
-
const <%=
|
|
37
|
-
const properties = <%=
|
|
36
|
+
const <%= resourceName %> = diff.node;
|
|
37
|
+
const properties = <%= resourceName %>.properties;
|
|
38
|
+
const response = <%= resourceName %>.response;
|
|
38
39
|
|
|
39
|
-
// Fix me:
|
|
40
|
-
|
|
41
|
-
// const ec2Client = await this.container.get<EC2Client, typeof EC2ClientFactory>(EC2Client, {
|
|
42
|
-
// args: [properties.awsAccountId, properties.awsRegionId],
|
|
43
|
-
// metadata: { package: '@example' },
|
|
44
|
-
// });
|
|
45
|
-
// ec2Client.send = async (instance: unknown): Promise<unknown> => {
|
|
46
|
-
// if (instance instanceof CreateVpcCommand) {
|
|
47
|
-
// return { Vpc: { VpcId: capture.VpcId } };
|
|
48
|
-
// } else if (instance instanceof ModifyVpcAttributeCommand) {
|
|
49
|
-
// return {};
|
|
50
|
-
// }
|
|
51
|
-
// };
|
|
40
|
+
// Fix me: Return response using captures.
|
|
41
|
+
return response;
|
|
52
42
|
}
|
|
53
43
|
}
|
|
54
44
|
|
|
@@ -18,31 +18,13 @@ export class Delete<%= resourceNamePascal %>ResourceAction extends ANodeAction i
|
|
|
18
18
|
|
|
19
19
|
async handle(diff: Diff<<%= resourceNamePascal %>>): Promise<void> {
|
|
20
20
|
// Get properties.
|
|
21
|
-
const <%=
|
|
22
|
-
const properties = <%=
|
|
23
|
-
const response = <%=
|
|
21
|
+
const <%= resourceName %> = diff.node;
|
|
22
|
+
const properties = <%= resourceName %>.properties;
|
|
23
|
+
const response = <%= resourceName %>.response;
|
|
24
24
|
|
|
25
25
|
// Fix me: Implement the delete resource logic.
|
|
26
26
|
// This is where you would delete the actual resource.
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
async mock(diff: Diff<<%= resourceNamePascal %>>): Promise<void> {
|
|
30
|
-
// Get properties.
|
|
31
|
-
const <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
|
|
32
|
-
const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
|
|
33
|
-
|
|
34
|
-
// Fix me: Implement mock logic for captures.
|
|
35
|
-
// E.g.,
|
|
36
|
-
// const ec2Client = await this.container.get<EC2Client, typeof EC2ClientFactory>(EC2Client, {
|
|
37
|
-
// args: [properties.awsAccountId, properties.awsRegionId],
|
|
38
|
-
// metadata: { package: '@example' },
|
|
39
|
-
// });
|
|
40
|
-
// ec2Client.send = async (instance: unknown): Promise<unknown> => {
|
|
41
|
-
// if (instance instanceof DeleteVpcCommand) {
|
|
42
|
-
// return;
|
|
43
|
-
// }
|
|
44
|
-
// };
|
|
45
|
-
}
|
|
46
28
|
}
|
|
47
29
|
|
|
48
30
|
@Factory<Delete<%= resourceNamePascal %>ResourceAction>(Delete<%= resourceNamePascal %>ResourceAction)
|
|
@@ -27,9 +27,9 @@ export class Update<%= resourceNamePascal %>TagsResourceAction extends ANodeActi
|
|
|
27
27
|
|
|
28
28
|
async handle(diff: Diff<<%= resourceNamePascal %>, DiffValueTypeTagUpdate>): Promise<void> {
|
|
29
29
|
// Get properties.
|
|
30
|
-
const <%=
|
|
31
|
-
const properties = <%=
|
|
32
|
-
const response = <%=
|
|
30
|
+
const <%= resourceName %> = diff.node;
|
|
31
|
+
const properties = <%= resourceName %>.properties;
|
|
32
|
+
const response = <%= resourceName %>.response;
|
|
33
33
|
const tagUpdates = diff.value;
|
|
34
34
|
|
|
35
35
|
// Fix me: Implement the update-tag resource logic.
|
|
@@ -65,20 +65,11 @@ export class Update<%= resourceNamePascal %>TagsResourceAction extends ANodeActi
|
|
|
65
65
|
);
|
|
66
66
|
}
|
|
67
67
|
*/
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async mock(diff: Diff<<%= resourceNamePascal %>, DiffValueTypeTagUpdate>): Promise<void> {
|
|
71
|
-
// Get properties.
|
|
72
|
-
const <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
|
|
73
|
-
const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
|
|
74
68
|
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
// metadata: { package: '@example' },
|
|
80
|
-
// });
|
|
81
|
-
// ec2Client.send = async (): Promise<void> => {};
|
|
69
|
+
// You could also extend from `GenericResourceTaggingAction`,
|
|
70
|
+
// only if the AWS resource is supported for generic resource tagging.
|
|
71
|
+
// See https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/supported-services.html
|
|
72
|
+
// for more details.
|
|
82
73
|
}
|
|
83
74
|
}
|
|
84
75
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ANodeAction, Action, type Diff, DiffAction, Factory, type IResourceAction, hasNodeName } from '@quadnix/octo';
|
|
2
|
+
import { <%= resourceNamePascal %> } from '../<%= resourceName %>.resource.js';
|
|
3
|
+
|
|
4
|
+
@Action(<%= resourceNamePascal %>)
|
|
5
|
+
export class Validate<%= resourceNamePascal %>ResourceAction extends ANodeAction implements IResourceAction<<%= resourceNamePascal %>> {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
filter(diff: Diff): boolean {
|
|
11
|
+
return (
|
|
12
|
+
diff.action === DiffAction.VALIDATE &&
|
|
13
|
+
diff.node instanceof <%= resourceNamePascal %> &&
|
|
14
|
+
hasNodeName(diff.node, '<%= resourceName %>') &&
|
|
15
|
+
diff.field === 'resourceId'
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async handle(diff: Diff<<%= resourceNamePascal %>>): Promise<void> {
|
|
20
|
+
// Get properties.
|
|
21
|
+
const <%= resourceName %> = diff.node;
|
|
22
|
+
const properties = <%= resourceName %>.properties;
|
|
23
|
+
const response = <%= resourceName %>.response;
|
|
24
|
+
|
|
25
|
+
// Fix me: Implement the resource validation logic.
|
|
26
|
+
// This is where you would validate the actual resource and its properties.
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Factory<Validate<%= resourceNamePascal %>ResourceAction>(Validate<%= resourceNamePascal %>ResourceAction)
|
|
31
|
+
export class Validate<%= resourceNamePascal %>ResourceActionFactory {
|
|
32
|
+
private static instance: Validate<%= resourceNamePascal %>ResourceAction;
|
|
33
|
+
|
|
34
|
+
static async create(): Promise<Validate<%= resourceNamePascal %>ResourceAction> {
|
|
35
|
+
if (!this.instance) {
|
|
36
|
+
this.instance = new Validate<%= resourceNamePascal %>ResourceAction();
|
|
37
|
+
}
|
|
38
|
+
return this.instance;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import './actions/add-<%= resourceName %>.resource.action.js';
|
|
2
2
|
import './actions/delete-<%= resourceName %>.resource.action.js';
|
|
3
3
|
import './actions/update-<%= resourceName %>-tags.resource.action.js';
|
|
4
|
+
import './actions/validate-<%= resourceName %>.resource.action.js';
|
|
4
5
|
|
|
5
6
|
export { <%= resourceNamePascal %> } from './<%= resourceName %>.resource.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { runCommand } from './run.command.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ArgumentsCamelCase, Argv } from 'yargs';
|
|
2
|
+
type RunCommandArguments = {
|
|
3
|
+
definitionFilePath: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const runCommand: {
|
|
6
|
+
builder: (yargs: Argv) => Argv;
|
|
7
|
+
command: string;
|
|
8
|
+
describe: string;
|
|
9
|
+
handler: (argv: ArgumentsCamelCase<RunCommandArguments>) => Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Octo } from '@quadnix/octo';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { YamlDefinitionUtility } from '../../utilities/definition/yaml/yaml-definition.utility.js';
|
|
4
|
+
export const runCommand = {
|
|
5
|
+
builder: (yargs) => {
|
|
6
|
+
return yargs.option('definitionFilePath', {
|
|
7
|
+
alias: 'd',
|
|
8
|
+
demandOption: true,
|
|
9
|
+
description: 'Path to the Octo definition YAML file.',
|
|
10
|
+
type: 'string',
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
command: 'run',
|
|
14
|
+
describe: 'Validate and run the Octo definition file.',
|
|
15
|
+
handler: async (argv) => {
|
|
16
|
+
let { definitionFilePath } = argv;
|
|
17
|
+
try {
|
|
18
|
+
const yamlDefinitionUtility = new YamlDefinitionUtility(definitionFilePath);
|
|
19
|
+
const hooks = await yamlDefinitionUtility.resolveHooks();
|
|
20
|
+
const imports = await yamlDefinitionUtility.resolveImports();
|
|
21
|
+
const listeners = await yamlDefinitionUtility.resolveListeners();
|
|
22
|
+
const modules = yamlDefinitionUtility.resolveModules(imports);
|
|
23
|
+
const stateProvider = yamlDefinitionUtility.resolveStateProvider();
|
|
24
|
+
const transactionOptions = yamlDefinitionUtility.resolveTransactionOptions();
|
|
25
|
+
console.log(chalk.green('Definition file is valid and all modules were successfully imported.'));
|
|
26
|
+
// Initialize.
|
|
27
|
+
const octo = new Octo();
|
|
28
|
+
await octo.initialize(stateProvider.type, listeners.map((l) => ({
|
|
29
|
+
options: {
|
|
30
|
+
args: l.args,
|
|
31
|
+
metadata: l.metadata,
|
|
32
|
+
},
|
|
33
|
+
type: l.type,
|
|
34
|
+
})));
|
|
35
|
+
// Register hooks.
|
|
36
|
+
octo.registerHooks(hooks);
|
|
37
|
+
// Load modules.
|
|
38
|
+
for (const moduleDefinition of modules) {
|
|
39
|
+
octo.loadModule(moduleDefinition.moduleClass, moduleDefinition.moduleId, moduleDefinition.moduleInputs);
|
|
40
|
+
}
|
|
41
|
+
octo.orderModules(modules.map((m) => m.moduleClass));
|
|
42
|
+
// Compose.
|
|
43
|
+
const appModuleId = modules[0].moduleId;
|
|
44
|
+
const initializedModules = await octo.compose();
|
|
45
|
+
const app = initializedModules[`${appModuleId}.model.app`];
|
|
46
|
+
// Start transaction.
|
|
47
|
+
const transaction = octo.beginTransaction(app, transactionOptions);
|
|
48
|
+
if (transactionOptions.yieldModelDiffs) {
|
|
49
|
+
const result = await transaction.next();
|
|
50
|
+
console.log(chalk.green('==== Model Diffs ===='));
|
|
51
|
+
console.log(JSON.stringify(result.value, null, 2));
|
|
52
|
+
}
|
|
53
|
+
if (transactionOptions.yieldModelTransaction) {
|
|
54
|
+
const result = await transaction.next();
|
|
55
|
+
console.log(chalk.green('==== Model Transaction ===='));
|
|
56
|
+
console.log(JSON.stringify(result.value, null, 2));
|
|
57
|
+
}
|
|
58
|
+
if (transactionOptions.yieldResourceDiffs) {
|
|
59
|
+
const result = await transaction.next();
|
|
60
|
+
console.log(chalk.green('==== Resource Diffs ===='));
|
|
61
|
+
console.log(JSON.stringify(result.value, null, 2));
|
|
62
|
+
}
|
|
63
|
+
if (transactionOptions.yieldResourceTransaction) {
|
|
64
|
+
const result = await transaction.next();
|
|
65
|
+
console.log(chalk.green('==== Resource Transaction ===='));
|
|
66
|
+
console.log(JSON.stringify(result.value, null, 2));
|
|
67
|
+
}
|
|
68
|
+
const result = await transaction.next();
|
|
69
|
+
if (!transactionOptions.yieldResourceTransaction) {
|
|
70
|
+
console.log(chalk.green('==== Resource Transaction ===='));
|
|
71
|
+
console.log(JSON.stringify(result.value, null, 2));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.log(chalk.red(error.message));
|
|
76
|
+
for (const failure of error.failures || []) {
|
|
77
|
+
console.log(chalk.red(failure));
|
|
78
|
+
}
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=run.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.command.js","sourceRoot":"","sources":["../../../src/commands/run/run.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { stateCommand } from './state.command.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ArgumentsCamelCase, type Argv } from 'yargs';
|
|
2
|
+
type StateCommandArguments = {
|
|
3
|
+
_: ['state', 'lock' | 'unlock' | 'get-lock'];
|
|
4
|
+
definitionFilePath: string;
|
|
5
|
+
lockID?: string;
|
|
6
|
+
};
|
|
7
|
+
declare function handler(argv: ArgumentsCamelCase<StateCommandArguments>): Promise<void>;
|
|
8
|
+
export declare const stateCommand: {
|
|
9
|
+
builder: (yargs: Argv) => Argv;
|
|
10
|
+
command: string;
|
|
11
|
+
describe: string;
|
|
12
|
+
handler: typeof handler;
|
|
13
|
+
};
|
|
14
|
+
export {};
|