@jttc/projen-project-types 1.0.0-beta.0 → 1.0.0-beta.10

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 (113) hide show
  1. package/.cz-config.js +83 -43
  2. package/.czrc +1 -1
  3. package/.jsii +4637 -14
  4. package/AGENTS.md +132 -0
  5. package/API.md +31146 -7
  6. package/README.md +197 -29
  7. package/docs/components/cdk8s.md +724 -0
  8. package/docs/components/commitzent.md +261 -0
  9. package/docs/components/k3d.md +456 -0
  10. package/docs/default-configurations.md +267 -0
  11. package/docs/index.md +86 -1
  12. package/docs/project-types/cdk-app.md +481 -0
  13. package/docs/project-types/cdk-library.md +321 -0
  14. package/docs/project-types/cdk8s-app.md +353 -0
  15. package/docs/project-types/cdk8s-library.md +442 -0
  16. package/docs/project-types/nx-monorepo.md +382 -0
  17. package/lib/cdk/cdk-app-project.d.ts +12 -0
  18. package/lib/cdk/cdk-app-project.js +28 -0
  19. package/lib/cdk/cdk-library-project.d.ts +12 -0
  20. package/lib/cdk/cdk-library-project.js +28 -0
  21. package/lib/cdk/cdk8s-app-project.d.ts +14 -0
  22. package/lib/cdk/cdk8s-app-project.js +54 -0
  23. package/lib/cdk/cdk8s-library-project.d.ts +14 -0
  24. package/lib/cdk/cdk8s-library-project.js +50 -0
  25. package/lib/cdk/index.d.ts +5 -0
  26. package/lib/cdk/index.js +22 -0
  27. package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
  28. package/lib/cdk/interfaces/cdk-app-options.js +3 -0
  29. package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
  30. package/lib/cdk/interfaces/cdk-library-options.js +3 -0
  31. package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
  32. package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
  33. package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
  34. package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
  35. package/lib/cdk/interfaces/index.d.ts +5 -0
  36. package/lib/cdk/interfaces/index.js +22 -0
  37. package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
  38. package/lib/cdk/interfaces/jsii-options.js +3 -0
  39. package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
  40. package/lib/cdk/interfaces/project-global-options.js +3 -0
  41. package/lib/cdk/jsii-project.d.ts +12 -0
  42. package/lib/cdk/jsii-project.js +24 -0
  43. package/lib/common/common-options.d.ts +40 -0
  44. package/lib/common/common-options.js +110 -0
  45. package/lib/components/agents/agents.d.ts +21 -0
  46. package/lib/components/agents/agents.js +476 -0
  47. package/lib/components/agents/index.d.ts +1 -0
  48. package/lib/components/agents/index.js +18 -0
  49. package/lib/components/cdk8s/cdk8s.d.ts +11 -0
  50. package/lib/components/cdk8s/cdk8s.js +124 -0
  51. package/lib/components/cdk8s/index.d.ts +2 -0
  52. package/lib/components/cdk8s/index.js +19 -0
  53. package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
  54. package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
  55. package/lib/components/cdk8s/main-library.ts.template +35 -0
  56. package/lib/components/cdk8s/main.test.ts.template +3 -0
  57. package/lib/components/cdk8s/main.ts.template +38 -0
  58. package/lib/components/commitzent/commitzent.d.ts +8 -0
  59. package/lib/components/commitzent/commitzent.js +100 -0
  60. package/lib/components/commitzent/index.d.ts +2 -0
  61. package/lib/components/commitzent/index.js +19 -0
  62. package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
  63. package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
  64. package/lib/components/index.d.ts +4 -0
  65. package/lib/components/index.js +21 -0
  66. package/lib/components/k3d/index.d.ts +3 -0
  67. package/lib/components/k3d/index.js +20 -0
  68. package/lib/components/k3d/k3d.d.ts +33 -0
  69. package/lib/components/k3d/k3d.js +109 -0
  70. package/lib/components/k3d/k3dBase.d.ts +4 -0
  71. package/lib/components/k3d/k3dBase.js +23 -0
  72. package/lib/components/k3d/types.d.ts +64 -0
  73. package/lib/components/k3d/types.js +8 -0
  74. package/lib/index.d.ts +5 -3
  75. package/lib/index.js +20 -12
  76. package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
  77. package/lib/monorepo/components/NxConfiguration.js +105 -0
  78. package/lib/monorepo/components/index.d.ts +2 -0
  79. package/lib/monorepo/components/index.js +19 -0
  80. package/lib/monorepo/components/publish-release.d.ts +5 -0
  81. package/lib/monorepo/components/publish-release.js +80 -0
  82. package/lib/monorepo/index.d.ts +3 -0
  83. package/lib/monorepo/index.js +20 -0
  84. package/lib/monorepo/interfaces/Nx.d.ts +130 -0
  85. package/lib/monorepo/interfaces/Nx.js +3 -0
  86. package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
  87. package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
  88. package/lib/monorepo/interfaces/index.d.ts +2 -0
  89. package/lib/monorepo/interfaces/index.js +19 -0
  90. package/lib/monorepo/monorepo.d.ts +16 -0
  91. package/lib/monorepo/monorepo.js +131 -0
  92. package/lib/terraform/components/index.d.ts +2 -0
  93. package/lib/terraform/components/index.js +19 -0
  94. package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
  95. package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
  96. package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
  97. package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
  98. package/lib/terraform/index.d.ts +5 -0
  99. package/lib/terraform/index.js +22 -0
  100. package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
  101. package/lib/terraform/providers/hetzner-provider.js +83 -0
  102. package/lib/terraform/providers/index.d.ts +2 -0
  103. package/lib/terraform/providers/index.js +19 -0
  104. package/lib/terraform/providers/provider-strategy.d.ts +44 -0
  105. package/lib/terraform/providers/provider-strategy.js +38 -0
  106. package/lib/terraform/terraform-base-project.d.ts +38 -0
  107. package/lib/terraform/terraform-base-project.js +97 -0
  108. package/lib/terraform/terraform-module-project.d.ts +24 -0
  109. package/lib/terraform/terraform-module-project.js +77 -0
  110. package/lib/terraform/terraform-stack-project.d.ts +28 -0
  111. package/lib/terraform/terraform-stack-project.js +83 -0
  112. package/mkdocs.yml +12 -0
  113. package/package.json +14 -7
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TerraformBaseProject = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ /**
8
+ * Base Terraform project that provides common Terraform configuration.
9
+ */
10
+ class TerraformBaseProject extends projen_1.Project {
11
+ constructor(options) {
12
+ super(options);
13
+ // Store the provider and terraform version
14
+ this._provider = options.provider;
15
+ this._terraformVersion = options.terraformVersion ?? '1.6.0';
16
+ // Create versions.tf with Terraform version constraint
17
+ new projen_1.TextFile(this, 'versions.tf', {
18
+ //marker: true,
19
+ //readonly: true,
20
+ lines: [
21
+ '# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". ~~',
22
+ '',
23
+ 'terraform {',
24
+ ` required_version = ">= ${this._terraformVersion}"`,
25
+ '}',
26
+ '',
27
+ ],
28
+ });
29
+ // Add Terraform-specific patterns to .gitignore
30
+ this.gitignore.addPatterns('.terraform/', '*.tfstate', '*.tfstate.*', '.terraform.lock.hcl', 'terraform.tfvars', '*.tfvars', 'override.tf', 'override.tf.json', '*_override.tf', '*_override.tf.json');
31
+ // Add basic Terraform tasks
32
+ this.addTask('terraform:init', {
33
+ description: 'Initialize Terraform working directory',
34
+ exec: 'terraform init',
35
+ });
36
+ this.addTask('terraform:format', {
37
+ description: 'Format Terraform configuration files',
38
+ exec: 'terraform fmt -recursive',
39
+ });
40
+ this.addTask('terraform:validate', {
41
+ description: 'Validate Terraform configuration',
42
+ exec: 'terraform validate',
43
+ });
44
+ }
45
+ /**
46
+ * Add a provider to this Terraform project.
47
+ * Only one provider per project is allowed.
48
+ */
49
+ addProvider(provider) {
50
+ if (this._provider) {
51
+ throw new Error('Only one provider per Terraform project is allowed');
52
+ }
53
+ this._provider = provider;
54
+ this.generateProviderFile();
55
+ }
56
+ /**
57
+ * Get the current provider.
58
+ */
59
+ get provider() {
60
+ return this._provider;
61
+ }
62
+ preSynthesize() {
63
+ super.preSynthesize();
64
+ if (this._provider) {
65
+ this.generateProviderFile();
66
+ }
67
+ }
68
+ /**
69
+ * Generate the provider.tf file if a provider is configured.
70
+ */
71
+ generateProviderFile() {
72
+ if (!this._provider) {
73
+ return;
74
+ }
75
+ new projen_1.TextFile(this, 'provider.tf', {
76
+ lines: [
77
+ '# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". ~~',
78
+ '',
79
+ 'terraform {',
80
+ ' required_providers {',
81
+ ` ${this._provider.providerAlias()} = {`,
82
+ ` source = "${this._provider.providerSource()}"`,
83
+ ` version = "${this._provider.versionConstraint()}"`,
84
+ ' }',
85
+ ' }',
86
+ '}',
87
+ '',
88
+ ...this._provider.generateProviderBlock(),
89
+ '',
90
+ ],
91
+ });
92
+ }
93
+ }
94
+ exports.TerraformBaseProject = TerraformBaseProject;
95
+ _a = JSII_RTTI_SYMBOL_1;
96
+ TerraformBaseProject[_a] = { fqn: "@jttc/projen-project-types.TerraformBaseProject", version: "1.0.0-beta.10" };
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWJhc2UtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXJyYWZvcm0vdGVycmFmb3JtLWJhc2UtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUEyRDtBQW1CM0Q7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLGdCQUFPO0lBSS9DLFlBQVksT0FBb0M7UUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQztRQUU3RCx1REFBdUQ7UUFDdkQsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDaEMsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixLQUFLLEVBQUU7Z0JBQ0wsaUZBQWlGO2dCQUNqRixFQUFFO2dCQUNGLGFBQWE7Z0JBQ2IsNEJBQTRCLElBQUksQ0FBQyxpQkFBaUIsR0FBRztnQkFDckQsR0FBRztnQkFDSCxFQUFFO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFFSCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3hCLGFBQWEsRUFDYixXQUFXLEVBQ1gsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixDQUNyQixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDL0IsV0FBVyxFQUFFLHNDQUFzQztZQUNuRCxJQUFJLEVBQUUsMEJBQTBCO1NBQ2pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUU7WUFDakMsV0FBVyxFQUFFLGtDQUFrQztZQUMvQyxJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsUUFBMkI7UUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNoQyxLQUFLLEVBQUU7Z0JBQ0wsaUZBQWlGO2dCQUNqRixFQUFFO2dCQUNGLGFBQWE7Z0JBQ2Isd0JBQXdCO2dCQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU07Z0JBQzNDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxHQUFHO2dCQUN0RCxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHO2dCQUN6RCxPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2dCQUNGLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDekMsRUFBRTthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzR0gsb0RBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvamVjdCwgUHJvamVjdE9wdGlvbnMsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBiYXNlIHByb2plY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zIGV4dGVuZHMgUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogTWluaW11bSByZXF1aXJlZCBUZXJyYWZvcm0gdmVyc2lvbi5cbiAgICogQGRlZmF1bHQgXCIxLjYuMFwiXG4gICAqL1xuICByZWFkb25seSB0ZXJyYWZvcm1WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXJyYWZvcm0gcHJvdmlkZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG59XG5cbi8qKlxuICogQmFzZSBUZXJyYWZvcm0gcHJvamVjdCB0aGF0IHByb3ZpZGVzIGNvbW1vbiBUZXJyYWZvcm0gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybUJhc2VQcm9qZWN0IGV4dGVuZHMgUHJvamVjdCB7XG4gIHByaXZhdGUgX3Byb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlcnJhZm9ybVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1CYXNlUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIC8vIFN0b3JlIHRoZSBwcm92aWRlciBhbmQgdGVycmFmb3JtIHZlcnNpb25cbiAgICB0aGlzLl9wcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gICAgdGhpcy5fdGVycmFmb3JtVmVyc2lvbiA9IG9wdGlvbnMudGVycmFmb3JtVmVyc2lvbiA/PyAnMS42LjAnO1xuXG4gICAgLy8gQ3JlYXRlIHZlcnNpb25zLnRmIHdpdGggVGVycmFmb3JtIHZlcnNpb24gY29uc3RyYWludFxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAndmVyc2lvbnMudGYnLCB7XG4gICAgICAvL21hcmtlcjogdHJ1ZSxcbiAgICAgIC8vcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnIyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuIH5+JyxcbiAgICAgICAgJycsXG4gICAgICAgICd0ZXJyYWZvcm0geycsXG4gICAgICAgIGAgIHJlcXVpcmVkX3ZlcnNpb24gPSBcIj49ICR7dGhpcy5fdGVycmFmb3JtVmVyc2lvbn1cImAsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFRlcnJhZm9ybS1zcGVjaWZpYyBwYXR0ZXJucyB0byAuZ2l0aWdub3JlXG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoXG4gICAgICAnLnRlcnJhZm9ybS8nLFxuICAgICAgJyoudGZzdGF0ZScsXG4gICAgICAnKi50ZnN0YXRlLionLFxuICAgICAgJy50ZXJyYWZvcm0ubG9jay5oY2wnLFxuICAgICAgJ3RlcnJhZm9ybS50ZnZhcnMnLFxuICAgICAgJyoudGZ2YXJzJyxcbiAgICAgICdvdmVycmlkZS50ZicsXG4gICAgICAnb3ZlcnJpZGUudGYuanNvbicsXG4gICAgICAnKl9vdmVycmlkZS50ZicsXG4gICAgICAnKl9vdmVycmlkZS50Zi5qc29uJyxcbiAgICApO1xuXG4gICAgLy8gQWRkIGJhc2ljIFRlcnJhZm9ybSB0YXNrc1xuICAgIHRoaXMuYWRkVGFzaygndGVycmFmb3JtOmluaXQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgVGVycmFmb3JtIHdvcmtpbmcgZGlyZWN0b3J5JyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gaW5pdCcsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpmb3JtYXQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Zvcm1hdCBUZXJyYWZvcm0gY29uZmlndXJhdGlvbiBmaWxlcycsXG4gICAgICBleGVjOiAndGVycmFmb3JtIGZtdCAtcmVjdXJzaXZlJyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygndGVycmFmb3JtOnZhbGlkYXRlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdWYWxpZGF0ZSBUZXJyYWZvcm0gY29uZmlndXJhdGlvbicsXG4gICAgICBleGVjOiAndGVycmFmb3JtIHZhbGlkYXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwcm92aWRlciB0byB0aGlzIFRlcnJhZm9ybSBwcm9qZWN0LlxuICAgKiBPbmx5IG9uZSBwcm92aWRlciBwZXIgcHJvamVjdCBpcyBhbGxvd2VkLlxuICAgKi9cbiAgcHVibGljIGFkZFByb3ZpZGVyKHByb3ZpZGVyOiBUZXJyYWZvcm1Qcm92aWRlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9wcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IG9uZSBwcm92aWRlciBwZXIgVGVycmFmb3JtIHByb2plY3QgaXMgYWxsb3dlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9wcm92aWRlciA9IHByb3ZpZGVyO1xuICAgIHRoaXMuZ2VuZXJhdGVQcm92aWRlckZpbGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb3ZpZGVyKCk6IFRlcnJhZm9ybVByb3ZpZGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXI7XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgaWYgKHRoaXMuX3Byb3ZpZGVyKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlUHJvdmlkZXJGaWxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBwcm92aWRlci50ZiBmaWxlIGlmIGEgcHJvdmlkZXIgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm92aWRlckZpbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wcm92aWRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAncHJvdmlkZXIudGYnLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICAnIyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuIH5+JyxcbiAgICAgICAgJycsXG4gICAgICAgICd0ZXJyYWZvcm0geycsXG4gICAgICAgICcgIHJlcXVpcmVkX3Byb3ZpZGVycyB7JyxcbiAgICAgICAgYCAgICAke3RoaXMuX3Byb3ZpZGVyLnByb3ZpZGVyQWxpYXMoKX0gPSB7YCxcbiAgICAgICAgYCAgICAgIHNvdXJjZSAgPSBcIiR7dGhpcy5fcHJvdmlkZXIucHJvdmlkZXJTb3VyY2UoKX1cImAsXG4gICAgICAgIGAgICAgICB2ZXJzaW9uID0gXCIke3RoaXMuX3Byb3ZpZGVyLnZlcnNpb25Db25zdHJhaW50KCl9XCJgLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgLi4udGhpcy5fcHJvdmlkZXIuZ2VuZXJhdGVQcm92aWRlckJsb2NrKCksXG4gICAgICAgICcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { TerraformBaseProject, TerraformBaseProjectOptions } from './terraform-base-project';
2
+ /**
3
+ * Options for Terraform module project.
4
+ */
5
+ export interface TerraformModuleProjectOptions extends TerraformBaseProjectOptions {
6
+ /**
7
+ * Enable GitHub workflow for Terraform plan on Pull Requests.
8
+ * Creates a workflow that validates and plans Terraform changes on PRs,
9
+ * and comments the results back to the PR.
10
+ * @default true
11
+ */
12
+ readonly enablePlanWorkflow?: boolean;
13
+ }
14
+ /**
15
+ * Terraform module project for creating reusable infrastructure components.
16
+ *
17
+ * This project type is designed for Terraform modules that are published
18
+ * and consumed by other projects, not for deploying infrastructure directly.
19
+ *
20
+ * @pjid terraform-module
21
+ */
22
+ export declare class TerraformModuleProject extends TerraformBaseProject {
23
+ constructor(options: TerraformModuleProjectOptions);
24
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TerraformModuleProject = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ const components_1 = require("./components");
8
+ const terraform_base_project_1 = require("./terraform-base-project");
9
+ /**
10
+ * Terraform module project for creating reusable infrastructure components.
11
+ *
12
+ * This project type is designed for Terraform modules that are published
13
+ * and consumed by other projects, not for deploying infrastructure directly.
14
+ *
15
+ * @pjid terraform-module
16
+ */
17
+ class TerraformModuleProject extends terraform_base_project_1.TerraformBaseProject {
18
+ constructor(options) {
19
+ super(options);
20
+ // Create main.tf
21
+ new projen_1.SampleFile(this, 'main.tf', {
22
+ contents: `# Main Terraform configuration
23
+ `,
24
+ });
25
+ // Create variables.tf
26
+ new projen_1.SampleFile(this, 'variables.tf', {
27
+ contents: `# Terraform variables
28
+ `,
29
+ });
30
+ // Create outputs.tf
31
+ new projen_1.SampleFile(this, 'outputs.tf', {
32
+ contents: `# Terraform outputs
33
+ `,
34
+ });
35
+ // Add terraform-specific tasks
36
+ this.addTask('terraform', {
37
+ description: 'Run terraform command with arguments',
38
+ exec: 'terraform',
39
+ receiveArgs: true,
40
+ });
41
+ this.addTask('terraform:plan', {
42
+ description: 'Plan Terraform changes',
43
+ exec: 'terraform plan',
44
+ });
45
+ // Note: No terraform:apply task for modules since they shouldn't be applied directly
46
+ // Modify pre-compile to run terraform format and validate
47
+ const preCompileTask = this.tasks.tryFind('pre-compile');
48
+ if (preCompileTask) {
49
+ const formatTask = this.tasks.tryFind('terraform:format');
50
+ const validateTask = this.tasks.tryFind('terraform:validate');
51
+ if (formatTask) {
52
+ preCompileTask.spawn(formatTask);
53
+ }
54
+ if (validateTask) {
55
+ preCompileTask.spawn(validateTask);
56
+ }
57
+ }
58
+ // Modify compile to run terraform plan
59
+ const compileTask = this.tasks.tryFind('compile');
60
+ if (compileTask) {
61
+ const planTask = this.tasks.tryFind('terraform:plan');
62
+ if (planTask) {
63
+ compileTask.spawn(planTask);
64
+ }
65
+ }
66
+ // Add Plan workflow for PRs if enabled (modules don't need deploy workflow)
67
+ if (options.enablePlanWorkflow !== false) {
68
+ new components_1.TerraformPlanGithubWorkflow(this, {
69
+ terraformVersion: options.terraformVersion,
70
+ });
71
+ }
72
+ }
73
+ }
74
+ exports.TerraformModuleProject = TerraformModuleProject;
75
+ _a = JSII_RTTI_SYMBOL_1;
76
+ TerraformModuleProject[_a] = { fqn: "@jttc/projen-project-types.TerraformModuleProject", version: "1.0.0-beta.10" };
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLW1vZHVsZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlcnJhZm9ybS90ZXJyYWZvcm0tbW9kdWxlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMsNkNBQTJEO0FBQzNELHFFQUdrQztBQWVsQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSw2Q0FBb0I7SUFDOUQsWUFBWSxPQUFzQztRQUNoRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixpQkFBaUI7UUFDakIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDOUIsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxzQkFBc0I7UUFDdEIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbkMsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDakMsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsV0FBVyxFQUFFLHNDQUFzQztZQUNuRCxJQUFJLEVBQUUsV0FBVztZQUNqQixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQzdCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUM7UUFFSCxxRkFBcUY7UUFFckYsMERBQTBEO1FBQzFELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRTlELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBRUQsNEVBQTRFO1FBQzVFLElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLElBQUksd0NBQTJCLENBQUMsSUFBSSxFQUFFO2dCQUNwQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpFSCx3REFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYW1wbGVGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFRlcnJhZm9ybVBsYW5HaXRodWJXb3JrZmxvdyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1CYXNlUHJvamVjdCxcbiAgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zLFxufSBmcm9tICcuL3RlcnJhZm9ybS1iYXNlLXByb2plY3QnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBtb2R1bGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Nb2R1bGVQcm9qZWN0T3B0aW9ucyBleHRlbmRzIFRlcnJhZm9ybUJhc2VQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFbmFibGUgR2l0SHViIHdvcmtmbG93IGZvciBUZXJyYWZvcm0gcGxhbiBvbiBQdWxsIFJlcXVlc3RzLlxuICAgKiBDcmVhdGVzIGEgd29ya2Zsb3cgdGhhdCB2YWxpZGF0ZXMgYW5kIHBsYW5zIFRlcnJhZm9ybSBjaGFuZ2VzIG9uIFBScyxcbiAgICogYW5kIGNvbW1lbnRzIHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIFBSLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQbGFuV29ya2Zsb3c/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRlcnJhZm9ybSBtb2R1bGUgcHJvamVjdCBmb3IgY3JlYXRpbmcgcmV1c2FibGUgaW5mcmFzdHJ1Y3R1cmUgY29tcG9uZW50cy5cbiAqXG4gKiBUaGlzIHByb2plY3QgdHlwZSBpcyBkZXNpZ25lZCBmb3IgVGVycmFmb3JtIG1vZHVsZXMgdGhhdCBhcmUgcHVibGlzaGVkXG4gKiBhbmQgY29uc3VtZWQgYnkgb3RoZXIgcHJvamVjdHMsIG5vdCBmb3IgZGVwbG95aW5nIGluZnJhc3RydWN0dXJlIGRpcmVjdGx5LlxuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybU1vZHVsZVByb2plY3QgZXh0ZW5kcyBUZXJyYWZvcm1CYXNlUHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRlcnJhZm9ybU1vZHVsZVByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50ZlxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICdtYWluLnRmJywge1xuICAgICAgY29udGVudHM6IGAjIE1haW4gVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgdmFyaWFibGVzLnRmXG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJ3ZhcmlhYmxlcy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gdmFyaWFibGVzXG5gLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIG91dHB1dHMudGZcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnb3V0cHV0cy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gb3V0cHV0c1xuYCxcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0ZXJyYWZvcm0tc3BlY2lmaWMgdGFza3NcbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRlcnJhZm9ybSBjb21tYW5kIHdpdGggYXJndW1lbnRzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0nLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpwbGFuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGFuIFRlcnJhZm9ybSBjaGFuZ2VzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gcGxhbicsXG4gICAgfSk7XG5cbiAgICAvLyBOb3RlOiBObyB0ZXJyYWZvcm06YXBwbHkgdGFzayBmb3IgbW9kdWxlcyBzaW5jZSB0aGV5IHNob3VsZG4ndCBiZSBhcHBsaWVkIGRpcmVjdGx5XG5cbiAgICAvLyBNb2RpZnkgcHJlLWNvbXBpbGUgdG8gcnVuIHRlcnJhZm9ybSBmb3JtYXQgYW5kIHZhbGlkYXRlXG4gICAgY29uc3QgcHJlQ29tcGlsZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3ByZS1jb21waWxlJyk7XG4gICAgaWYgKHByZUNvbXBpbGVUYXNrKSB7XG4gICAgICBjb25zdCBmb3JtYXRUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKCd0ZXJyYWZvcm06Zm9ybWF0Jyk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTp2YWxpZGF0ZScpO1xuXG4gICAgICBpZiAoZm9ybWF0VGFzaykge1xuICAgICAgICBwcmVDb21waWxlVGFzay5zcGF3bihmb3JtYXRUYXNrKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxpZGF0ZVRhc2spIHtcbiAgICAgICAgcHJlQ29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNb2RpZnkgY29tcGlsZSB0byBydW4gdGVycmFmb3JtIHBsYW5cbiAgICBjb25zdCBjb21waWxlVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpO1xuICAgIGlmIChjb21waWxlVGFzaykge1xuICAgICAgY29uc3QgcGxhblRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTpwbGFuJyk7XG4gICAgICBpZiAocGxhblRhc2spIHtcbiAgICAgICAgY29tcGlsZVRhc2suc3Bhd24ocGxhblRhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBQbGFuIHdvcmtmbG93IGZvciBQUnMgaWYgZW5hYmxlZCAobW9kdWxlcyBkb24ndCBuZWVkIGRlcGxveSB3b3JrZmxvdylcbiAgICBpZiAob3B0aW9ucy5lbmFibGVQbGFuV29ya2Zsb3cgIT09IGZhbHNlKSB7XG4gICAgICBuZXcgVGVycmFmb3JtUGxhbkdpdGh1YldvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgdGVycmFmb3JtVmVyc2lvbjogb3B0aW9ucy50ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { TerraformBaseProject, TerraformBaseProjectOptions } from './terraform-base-project';
2
+ /**
3
+ * Options for Terraform stack project.
4
+ */
5
+ export interface TerraformStackProjectOptions extends TerraformBaseProjectOptions {
6
+ /**
7
+ * Enable GitHub workflow for Terraform deployment.
8
+ * Creates a workflow that validates, plans, and applies Terraform changes.
9
+ * Only applicable for stack projects, not module projects.
10
+ * @default true
11
+ */
12
+ readonly enableGitHubWorkflow?: boolean;
13
+ /**
14
+ * Enable GitHub workflow for Terraform plan on Pull Requests.
15
+ * Creates a workflow that validates and plans Terraform changes on PRs,
16
+ * and comments the results back to the PR.
17
+ * @default true
18
+ */
19
+ readonly enablePlanWorkflow?: boolean;
20
+ }
21
+ /**
22
+ * Terraform stack project for managing infrastructure.
23
+ *
24
+ * @pjid terraform-stack
25
+ */
26
+ export declare class TerraformStackProject extends TerraformBaseProject {
27
+ constructor(options: TerraformStackProjectOptions);
28
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TerraformStackProject = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ const components_1 = require("./components");
8
+ const terraform_base_project_1 = require("./terraform-base-project");
9
+ /**
10
+ * Terraform stack project for managing infrastructure.
11
+ *
12
+ * @pjid terraform-stack
13
+ */
14
+ class TerraformStackProject extends terraform_base_project_1.TerraformBaseProject {
15
+ constructor(options) {
16
+ super(options);
17
+ // Create main.tf
18
+ new projen_1.SampleFile(this, 'main.tf', {
19
+ contents: `# Main Terraform configuration
20
+ `,
21
+ });
22
+ // Create variables.tf
23
+ new projen_1.SampleFile(this, 'variables.tf', {
24
+ contents: `# Terraform variables
25
+ `,
26
+ });
27
+ // Create outputs.tf
28
+ new projen_1.SampleFile(this, 'outputs.tf', {
29
+ contents: `# Terraform outputs
30
+ `,
31
+ });
32
+ // Add terraform-specific tasks
33
+ this.addTask('terraform', {
34
+ description: 'Run terraform command with arguments',
35
+ exec: 'terraform',
36
+ receiveArgs: true,
37
+ });
38
+ this.addTask('terraform:plan', {
39
+ description: 'Plan Terraform changes',
40
+ exec: 'terraform plan',
41
+ });
42
+ this.addTask('terraform:apply', {
43
+ description: 'Apply Terraform changes',
44
+ exec: 'terraform apply',
45
+ });
46
+ // Modify pre-compile to run terraform format and validate
47
+ const preCompileTask = this.tasks.tryFind('pre-compile');
48
+ if (preCompileTask) {
49
+ const formatTask = this.tasks.tryFind('terraform:format');
50
+ const validateTask = this.tasks.tryFind('terraform:validate');
51
+ if (formatTask) {
52
+ preCompileTask.spawn(formatTask);
53
+ }
54
+ if (validateTask) {
55
+ preCompileTask.spawn(validateTask);
56
+ }
57
+ }
58
+ // Modify compile to run terraform plan
59
+ const compileTask = this.tasks.tryFind('compile');
60
+ if (compileTask) {
61
+ const planTask = this.tasks.tryFind('terraform:plan');
62
+ if (planTask) {
63
+ compileTask.spawn(planTask);
64
+ }
65
+ }
66
+ // Add GitHub workflow if enabled
67
+ if (options.enableGitHubWorkflow !== false) {
68
+ new components_1.TerraformDeployGithubWorkflow(this, {
69
+ terraformVersion: options.terraformVersion,
70
+ });
71
+ }
72
+ // Add Plan workflow for PRs if enabled
73
+ if (options.enablePlanWorkflow !== false) {
74
+ new components_1.TerraformPlanGithubWorkflow(this, {
75
+ terraformVersion: options.terraformVersion,
76
+ });
77
+ }
78
+ }
79
+ }
80
+ exports.TerraformStackProject = TerraformStackProject;
81
+ _a = JSII_RTTI_SYMBOL_1;
82
+ TerraformStackProject[_a] = { fqn: "@jttc/projen-project-types.TerraformStackProject", version: "1.0.0-beta.10" };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXN0YWNrLXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVycmFmb3JtL3RlcnJhZm9ybS1zdGFjay1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW9DO0FBQ3BDLDZDQUdzQjtBQUN0QixxRUFHa0M7QUF1QmxDOzs7O0dBSUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLDZDQUFvQjtJQUM3RCxZQUFZLE9BQXFDO1FBQy9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLGlCQUFpQjtRQUNqQixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM5QixRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNuQyxRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILG9CQUFvQjtRQUNwQixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNqQyxRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILCtCQUErQjtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN4QixXQUFXLEVBQUUsc0NBQXNDO1lBQ25ELElBQUksRUFBRSxXQUFXO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDOUIsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCLENBQUMsQ0FBQztRQUVILDBEQUEwRDtRQUMxRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUU5RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLGNBQWMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxJQUFJLDBDQUE2QixDQUFDLElBQUksRUFBRTtnQkFDdEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjthQUMzQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLElBQUksd0NBQTJCLENBQUMsSUFBSSxFQUFFO2dCQUNwQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQTNFSCxzREE0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYW1wbGVGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7XG4gIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93LFxuICBUZXJyYWZvcm1QbGFuR2l0aHViV29ya2Zsb3csXG59IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1CYXNlUHJvamVjdCxcbiAgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zLFxufSBmcm9tICcuL3RlcnJhZm9ybS1iYXNlLXByb2plY3QnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBzdGFjayBwcm9qZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVN0YWNrUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBUZXJyYWZvcm1CYXNlUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlIEdpdEh1YiB3b3JrZmxvdyBmb3IgVGVycmFmb3JtIGRlcGxveW1lbnQuXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyB0aGF0IHZhbGlkYXRlcywgcGxhbnMsIGFuZCBhcHBsaWVzIFRlcnJhZm9ybSBjaGFuZ2VzLlxuICAgKiBPbmx5IGFwcGxpY2FibGUgZm9yIHN0YWNrIHByb2plY3RzLCBub3QgbW9kdWxlIHByb2plY3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVHaXRIdWJXb3JrZmxvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgd29ya2Zsb3cgZm9yIFRlcnJhZm9ybSBwbGFuIG9uIFB1bGwgUmVxdWVzdHMuXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyB0aGF0IHZhbGlkYXRlcyBhbmQgcGxhbnMgVGVycmFmb3JtIGNoYW5nZXMgb24gUFJzLFxuICAgKiBhbmQgY29tbWVudHMgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUgUFIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVBsYW5Xb3JrZmxvdz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGVycmFmb3JtIHN0YWNrIHByb2plY3QgZm9yIG1hbmFnaW5nIGluZnJhc3RydWN0dXJlLlxuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1zdGFja1xuICovXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtU3RhY2tQcm9qZWN0IGV4dGVuZHMgVGVycmFmb3JtQmFzZVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1TdGFja1Byb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50ZlxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICdtYWluLnRmJywge1xuICAgICAgY29udGVudHM6IGAjIE1haW4gVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgdmFyaWFibGVzLnRmXG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJ3ZhcmlhYmxlcy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gdmFyaWFibGVzXG5gLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIG91dHB1dHMudGZcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnb3V0cHV0cy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gb3V0cHV0c1xuYCxcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0ZXJyYWZvcm0tc3BlY2lmaWMgdGFza3NcbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRlcnJhZm9ybSBjb21tYW5kIHdpdGggYXJndW1lbnRzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0nLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpwbGFuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGFuIFRlcnJhZm9ybSBjaGFuZ2VzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gcGxhbicsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTphcHBseScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQXBwbHkgVGVycmFmb3JtIGNoYW5nZXMnLFxuICAgICAgZXhlYzogJ3RlcnJhZm9ybSBhcHBseScsXG4gICAgfSk7XG5cbiAgICAvLyBNb2RpZnkgcHJlLWNvbXBpbGUgdG8gcnVuIHRlcnJhZm9ybSBmb3JtYXQgYW5kIHZhbGlkYXRlXG4gICAgY29uc3QgcHJlQ29tcGlsZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3ByZS1jb21waWxlJyk7XG4gICAgaWYgKHByZUNvbXBpbGVUYXNrKSB7XG4gICAgICBjb25zdCBmb3JtYXRUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKCd0ZXJyYWZvcm06Zm9ybWF0Jyk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTp2YWxpZGF0ZScpO1xuXG4gICAgICBpZiAoZm9ybWF0VGFzaykge1xuICAgICAgICBwcmVDb21waWxlVGFzay5zcGF3bihmb3JtYXRUYXNrKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxpZGF0ZVRhc2spIHtcbiAgICAgICAgcHJlQ29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNb2RpZnkgY29tcGlsZSB0byBydW4gdGVycmFmb3JtIHBsYW5cbiAgICBjb25zdCBjb21waWxlVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpO1xuICAgIGlmIChjb21waWxlVGFzaykge1xuICAgICAgY29uc3QgcGxhblRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTpwbGFuJyk7XG4gICAgICBpZiAocGxhblRhc2spIHtcbiAgICAgICAgY29tcGlsZVRhc2suc3Bhd24ocGxhblRhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBHaXRIdWIgd29ya2Zsb3cgaWYgZW5hYmxlZFxuICAgIGlmIChvcHRpb25zLmVuYWJsZUdpdEh1YldvcmtmbG93ICE9PSBmYWxzZSkge1xuICAgICAgbmV3IFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgdGVycmFmb3JtVmVyc2lvbjogb3B0aW9ucy50ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIFBsYW4gd29ya2Zsb3cgZm9yIFBScyBpZiBlbmFibGVkXG4gICAgaWYgKG9wdGlvbnMuZW5hYmxlUGxhbldvcmtmbG93ICE9PSBmYWxzZSkge1xuICAgICAgbmV3IFRlcnJhZm9ybVBsYW5HaXRodWJXb3JrZmxvdyh0aGlzLCB7XG4gICAgICAgIHRlcnJhZm9ybVZlcnNpb246IG9wdGlvbnMudGVycmFmb3JtVmVyc2lvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
package/mkdocs.yml CHANGED
@@ -4,6 +4,18 @@ repo_url: https://github.com/JumpToTheCloud/projen-project-types
4
4
  nav:
5
5
  - Homepage:
6
6
  - index.md
7
+ - Project Types:
8
+ - CDK Library: project-types/cdk-library.md
9
+ - CDK App: project-types/cdk-app.md
10
+ - CDK8s Library: project-types/cdk8s-library.md
11
+ - CDK8s App: project-types/cdk8s-app.md
12
+ - NX Monorepo: project-types/nx-monorepo.md
13
+ - Components:
14
+ - CDK8s Component: components/cdk8s.md
15
+ - K3d Component: components/k3d.md
16
+ - Commitzent Component: components/commitzent.md
17
+ - Configuration:
18
+ - Default Configurations: default-configurations.md
7
19
  theme:
8
20
  name: material
9
21
  font:
package/package.json CHANGED
@@ -38,37 +38,44 @@
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/jest": "^30.0.0",
41
- "@types/node": "^25.0.3",
41
+ "@types/node": "^25.0.6",
42
42
  "@typescript-eslint/eslint-plugin": "^8",
43
43
  "@typescript-eslint/parser": "^8",
44
44
  "commit-and-tag-version": "^12",
45
45
  "commitizen": "^4.3.1",
46
- "constructs": "^10.0.0",
46
+ "constructs": "10.4.4",
47
47
  "cz-customizable": "^7.5.1",
48
48
  "eslint": "^9",
49
49
  "eslint-config-prettier": "^10.1.8",
50
50
  "eslint-import-resolver-typescript": "^4.4.4",
51
51
  "eslint-plugin-import": "^2.32.0",
52
- "eslint-plugin-prettier": "^5.5.4",
52
+ "eslint-plugin-prettier": "^5.5.5",
53
53
  "jest": "^30.2.0",
54
54
  "jest-junit": "^16",
55
55
  "jsii": "~5.9.0",
56
- "jsii-diff": "^1.121.0",
56
+ "jsii-diff": "^1.125.0",
57
57
  "jsii-docgen": "^10.5.0",
58
- "jsii-pacmak": "^1.121.0",
58
+ "jsii-pacmak": "^1.125.0",
59
59
  "jsii-rosetta": "~5.9.0",
60
60
  "prettier": "^3.7.4",
61
- "projen": "^0.98.30",
61
+ "projen": "^0.99.1",
62
62
  "ts-jest": "^29.4.6",
63
63
  "ts-node": "^10.9.2",
64
64
  "typescript": "^5.9.3"
65
65
  },
66
+ "peerDependencies": {
67
+ "constructs": "^10.4.4",
68
+ "projen": "^0.99.1"
69
+ },
70
+ "dependencies": {
71
+ "projen": "^0.99.1"
72
+ },
66
73
  "main": "lib/index.js",
67
74
  "license": "Apache-2.0",
68
75
  "publishConfig": {
69
76
  "access": "public"
70
77
  },
71
- "version": "1.0.0-beta.0",
78
+ "version": "1.0.0-beta.10",
72
79
  "jest": {
73
80
  "coverageProvider": "v8",
74
81
  "verbose": true,