@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.
Files changed (35) hide show
  1. package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js +2 -5
  2. package/dist/commands/create-app/generator-octo-app-template/generators/app/index.js.map +1 -1
  3. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/README.md.ejs +49 -30
  4. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/package.json.ejs +0 -3
  5. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/octo.yaml.ejs +48 -0
  6. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js +4 -0
  7. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/index.js.map +1 -1
  8. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/add.resource.action.ts.ejs +13 -23
  9. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/delete.resource.action.ts.ejs +3 -21
  10. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/update-tags.resource.action.ts.ejs +7 -16
  11. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/actions/validate.resource.action.ts.ejs +40 -0
  12. package/dist/commands/create-resource/generator-octo-resource-template/generators/app/templates/resources/resource/index.ts.ejs +1 -0
  13. package/dist/commands/run/index.d.ts +1 -0
  14. package/dist/commands/run/index.js +2 -0
  15. package/dist/commands/run/index.js.map +1 -0
  16. package/dist/commands/run/run.command.d.ts +11 -0
  17. package/dist/commands/run/run.command.js +83 -0
  18. package/dist/commands/run/run.command.js.map +1 -0
  19. package/dist/commands/state/index.d.ts +1 -0
  20. package/dist/commands/state/index.js +2 -0
  21. package/dist/commands/state/index.js.map +1 -0
  22. package/dist/commands/state/state.command.d.ts +14 -0
  23. package/dist/commands/state/state.command.js +79 -0
  24. package/dist/commands/state/state.command.js.map +1 -0
  25. package/dist/index.js +4 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/resources/octo-v1.schema.json +170 -0
  28. package/dist/utilities/definition/yaml/yaml-definition.utility.d.ts +60 -0
  29. package/dist/utilities/definition/yaml/yaml-definition.utility.js +223 -0
  30. package/dist/utilities/definition/yaml/yaml-definition.utility.js.map +1 -0
  31. package/package.json +5 -2
  32. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/app.config.ts.ejs +0 -25
  33. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/env.ejs +0 -5
  34. package/dist/commands/create-app/generator-octo-app-template/generators/app/templates/src/aws-s3-website/main.ts.ejs +0 -22
  35. 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}/app.config.ts.ejs`), this.destinationPath('src/app.config.ts'));
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":"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"}
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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"}
@@ -11,48 +11,67 @@ npm install
11
11
 
12
12
  ## Fix me
13
13
  Before running the app, ensure,
14
- - `.env` values are appropriately set.
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 `module-definitions.ts`, comment out all modules except the `app` and `account` modules.
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 deleting the `s3-website-service-module` module below,
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
- ```typescript
34
- // Example for 'aws-s3-website' template.
35
- private init(): void {
36
- this.add(SimpleAppModule, 'app-module', { name: 'aws-s3-website' });
37
-
38
- this.add(AwsIniAccountModule, 'account-module', {
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
- ### Step 2
53
- Then, simply re-build and run your app again.
61
+ - moduleId: account-module
62
+ moduleClass: AwsIniAccountModule
63
+ moduleInputs:
64
+ accountId: "${env.AWS_ACCOUNT_ID}"
65
+ app: "${{app-module.model.app}}"
54
66
 
55
- ```bash
56
- npm run build
57
- npm start
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
@@ -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));
@@ -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<void> {
20
+ async handle(diff: Diff<<%= resourceNamePascal %>>): Promise<<%= resourceNamePascal %>Schema['response']> {
21
21
  // Get properties.
22
- const <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
23
- const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
24
- const response = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.response;
25
- const tags = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.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
- // Set response.
31
- // Fix me: Set response properties.
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<void> {
34
+ async mock(diff: Diff<<%= resourceNamePascal %>>, capture: Partial<<%= resourceNamePascal %>Schema['response']>): Promise<<%= resourceNamePascal %>Schema['response']> {
35
35
  // Get properties.
36
- const <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
37
- const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
36
+ const <%= resourceName %> = diff.node;
37
+ const properties = <%= resourceName %>.properties;
38
+ const response = <%= resourceName %>.response;
38
39
 
39
- // Fix me: Implement mock logic for captures.
40
- // E.g.,
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 <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
22
- const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
23
- const response = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.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 <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %> = diff.node;
31
- const properties = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.properties;
32
- const response = <%= resourceNamePascal.toLowerCase().charAt(0) + resourceNamePascal.slice(1) %>.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
- // Fix me: Implement mock logic for captures.
76
- // E.g.,
77
- // const ec2Client = await this.container.get<EC2Client, typeof EC2ClientFactory>(EC2Client, {
78
- // args: [properties.awsAccountId, properties.awsRegionId],
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,2 @@
1
+ export { runCommand } from './run.command.js';
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export { stateCommand } from './state.command.js';
2
+ //# sourceMappingURL=index.js.map
@@ -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 {};