@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.
- package/.cz-config.js +83 -43
- package/.czrc +1 -1
- package/.jsii +4637 -14
- package/AGENTS.md +132 -0
- package/API.md +31146 -7
- package/README.md +197 -29
- package/docs/components/cdk8s.md +724 -0
- package/docs/components/commitzent.md +261 -0
- package/docs/components/k3d.md +456 -0
- package/docs/default-configurations.md +267 -0
- package/docs/index.md +86 -1
- package/docs/project-types/cdk-app.md +481 -0
- package/docs/project-types/cdk-library.md +321 -0
- package/docs/project-types/cdk8s-app.md +353 -0
- package/docs/project-types/cdk8s-library.md +442 -0
- package/docs/project-types/nx-monorepo.md +382 -0
- package/lib/cdk/cdk-app-project.d.ts +12 -0
- package/lib/cdk/cdk-app-project.js +28 -0
- package/lib/cdk/cdk-library-project.d.ts +12 -0
- package/lib/cdk/cdk-library-project.js +28 -0
- package/lib/cdk/cdk8s-app-project.d.ts +14 -0
- package/lib/cdk/cdk8s-app-project.js +54 -0
- package/lib/cdk/cdk8s-library-project.d.ts +14 -0
- package/lib/cdk/cdk8s-library-project.js +50 -0
- package/lib/cdk/index.d.ts +5 -0
- package/lib/cdk/index.js +22 -0
- package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
- package/lib/cdk/interfaces/cdk-app-options.js +3 -0
- package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
- package/lib/cdk/interfaces/cdk-library-options.js +3 -0
- package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
- package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
- package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
- package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
- package/lib/cdk/interfaces/index.d.ts +5 -0
- package/lib/cdk/interfaces/index.js +22 -0
- package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
- package/lib/cdk/interfaces/jsii-options.js +3 -0
- package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
- package/lib/cdk/interfaces/project-global-options.js +3 -0
- package/lib/cdk/jsii-project.d.ts +12 -0
- package/lib/cdk/jsii-project.js +24 -0
- package/lib/common/common-options.d.ts +40 -0
- package/lib/common/common-options.js +110 -0
- package/lib/components/agents/agents.d.ts +21 -0
- package/lib/components/agents/agents.js +476 -0
- package/lib/components/agents/index.d.ts +1 -0
- package/lib/components/agents/index.js +18 -0
- package/lib/components/cdk8s/cdk8s.d.ts +11 -0
- package/lib/components/cdk8s/cdk8s.js +124 -0
- package/lib/components/cdk8s/index.d.ts +2 -0
- package/lib/components/cdk8s/index.js +19 -0
- package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
- package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
- package/lib/components/cdk8s/main-library.ts.template +35 -0
- package/lib/components/cdk8s/main.test.ts.template +3 -0
- package/lib/components/cdk8s/main.ts.template +38 -0
- package/lib/components/commitzent/commitzent.d.ts +8 -0
- package/lib/components/commitzent/commitzent.js +100 -0
- package/lib/components/commitzent/index.d.ts +2 -0
- package/lib/components/commitzent/index.js +19 -0
- package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
- package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
- package/lib/components/index.d.ts +4 -0
- package/lib/components/index.js +21 -0
- package/lib/components/k3d/index.d.ts +3 -0
- package/lib/components/k3d/index.js +20 -0
- package/lib/components/k3d/k3d.d.ts +33 -0
- package/lib/components/k3d/k3d.js +109 -0
- package/lib/components/k3d/k3dBase.d.ts +4 -0
- package/lib/components/k3d/k3dBase.js +23 -0
- package/lib/components/k3d/types.d.ts +64 -0
- package/lib/components/k3d/types.js +8 -0
- package/lib/index.d.ts +5 -3
- package/lib/index.js +20 -12
- package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
- package/lib/monorepo/components/NxConfiguration.js +105 -0
- package/lib/monorepo/components/index.d.ts +2 -0
- package/lib/monorepo/components/index.js +19 -0
- package/lib/monorepo/components/publish-release.d.ts +5 -0
- package/lib/monorepo/components/publish-release.js +80 -0
- package/lib/monorepo/index.d.ts +3 -0
- package/lib/monorepo/index.js +20 -0
- package/lib/monorepo/interfaces/Nx.d.ts +130 -0
- package/lib/monorepo/interfaces/Nx.js +3 -0
- package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
- package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
- package/lib/monorepo/interfaces/index.d.ts +2 -0
- package/lib/monorepo/interfaces/index.js +19 -0
- package/lib/monorepo/monorepo.d.ts +16 -0
- package/lib/monorepo/monorepo.js +131 -0
- package/lib/terraform/components/index.d.ts +2 -0
- package/lib/terraform/components/index.js +19 -0
- package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
- package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
- package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
- package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
- package/lib/terraform/index.d.ts +5 -0
- package/lib/terraform/index.js +22 -0
- package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
- package/lib/terraform/providers/hetzner-provider.js +83 -0
- package/lib/terraform/providers/index.d.ts +2 -0
- package/lib/terraform/providers/index.js +19 -0
- package/lib/terraform/providers/provider-strategy.d.ts +44 -0
- package/lib/terraform/providers/provider-strategy.js +38 -0
- package/lib/terraform/terraform-base-project.d.ts +38 -0
- package/lib/terraform/terraform-base-project.js +97 -0
- package/lib/terraform/terraform-module-project.d.ts +24 -0
- package/lib/terraform/terraform-module-project.js +77 -0
- package/lib/terraform/terraform-stack-project.d.ts +28 -0
- package/lib/terraform/terraform-stack-project.js +83 -0
- package/mkdocs.yml +12 -0
- package/package.json +14 -7
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export interface Affected {
|
|
2
|
+
/**
|
|
3
|
+
* Default base to use for affected commands
|
|
4
|
+
* It will take the projen default base by default
|
|
5
|
+
*/
|
|
6
|
+
readonly defaultBase?: string;
|
|
7
|
+
}
|
|
8
|
+
export type NamedInput = {
|
|
9
|
+
readonly [name: string]: string[];
|
|
10
|
+
};
|
|
11
|
+
export type TargetDefaultConfigurations = {
|
|
12
|
+
[name: string]: string;
|
|
13
|
+
};
|
|
14
|
+
export interface TargetDefaults {
|
|
15
|
+
/**
|
|
16
|
+
* Target name
|
|
17
|
+
*/
|
|
18
|
+
readonly name: string;
|
|
19
|
+
/**
|
|
20
|
+
* The function that Nx will invoke when you run this target
|
|
21
|
+
*/
|
|
22
|
+
readonly executor?: string;
|
|
23
|
+
readonly options?: {
|
|
24
|
+
[key: string]: string;
|
|
25
|
+
};
|
|
26
|
+
readonly outputs?: string[];
|
|
27
|
+
/**
|
|
28
|
+
* The name of a configuration to use as the default if a configuration is not provided
|
|
29
|
+
*/
|
|
30
|
+
readonly defaultConfiguration?: string;
|
|
31
|
+
/**
|
|
32
|
+
* provides extra sets of values that will be merged into the options map
|
|
33
|
+
*/
|
|
34
|
+
readonly configurations?: TargetDefaultConfigurations;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this target runs continuously until stopped
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
readonly continuous?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether this target can be run in parallel with other tasks
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
44
|
+
readonly parallelism?: boolean;
|
|
45
|
+
readonly inputs?: string[];
|
|
46
|
+
readonly dependsOn?: string[];
|
|
47
|
+
/**
|
|
48
|
+
* Specifies if the given target should be cacheable
|
|
49
|
+
*/
|
|
50
|
+
readonly cache?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* List of generators to run before the target to ensure the workspace is up to date
|
|
53
|
+
*/
|
|
54
|
+
readonly syncGenerators?: string[];
|
|
55
|
+
}
|
|
56
|
+
export interface RunnerOptions {
|
|
57
|
+
readonly accessToken?: string;
|
|
58
|
+
readonly nxCloudId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Defines whether the cache captures stderr or just stdout
|
|
61
|
+
*/
|
|
62
|
+
readonly captureStderr?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Defines the max number of targets ran in parallel
|
|
65
|
+
*/
|
|
66
|
+
readonly parallel?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Defines the list of targets/operations that are cached by Nx
|
|
69
|
+
*/
|
|
70
|
+
readonly cacheableOperations: string[];
|
|
71
|
+
/**
|
|
72
|
+
* Defines where the local cache is stored
|
|
73
|
+
*/
|
|
74
|
+
readonly cacheDirectory?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Defines whether the Nx Cache should be skipped
|
|
77
|
+
*/
|
|
78
|
+
readonly skipNxCache?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Defines an encryption key to support end-to-end encryption of your cloud cache.
|
|
81
|
+
* You may also provide an environment variable with the key NX_CLOUD_ENCRYPTION_KEY
|
|
82
|
+
* that contains an encryption key as its value. The Nx Cloud task runner normalizes
|
|
83
|
+
* the key length, so any length of key is acceptable.
|
|
84
|
+
*/
|
|
85
|
+
readonly encryptionKey?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface TaskRunnerOptions {
|
|
88
|
+
/**
|
|
89
|
+
* Name of the Task Runner
|
|
90
|
+
*/
|
|
91
|
+
readonly name: string;
|
|
92
|
+
/**
|
|
93
|
+
* Path to resolve the runner
|
|
94
|
+
*/
|
|
95
|
+
readonly runner: string;
|
|
96
|
+
/**
|
|
97
|
+
* Default options for the runner
|
|
98
|
+
*/
|
|
99
|
+
readonly options: RunnerOptions;
|
|
100
|
+
}
|
|
101
|
+
export interface ReleaseVersion {
|
|
102
|
+
readonly conventionalCommits: true;
|
|
103
|
+
}
|
|
104
|
+
export interface WorkspaceChangelog {
|
|
105
|
+
readonly createRelease: string;
|
|
106
|
+
}
|
|
107
|
+
export interface ReleaseChangelog {
|
|
108
|
+
readonly workspaceChangelog: WorkspaceChangelog;
|
|
109
|
+
}
|
|
110
|
+
export interface NxRelease {
|
|
111
|
+
readonly projects: string[];
|
|
112
|
+
readonly version: ReleaseVersion;
|
|
113
|
+
readonly changelog?: ReleaseChangelog;
|
|
114
|
+
}
|
|
115
|
+
export interface NxConfiguration {
|
|
116
|
+
/**
|
|
117
|
+
* Specifies the base config to exten
|
|
118
|
+
* @default nx/presets/npm.json
|
|
119
|
+
*/
|
|
120
|
+
readonly extends?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Default options for `nx affected`
|
|
123
|
+
*/
|
|
124
|
+
readonly affected: Affected;
|
|
125
|
+
/**
|
|
126
|
+
* Named inputs used by inputs defined in targets
|
|
127
|
+
*/
|
|
128
|
+
readonly namedInput: NamedInput;
|
|
129
|
+
readonly release?: NxRelease;
|
|
130
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ub3JlcG8vaW50ZXJmYWNlcy9OeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBZmZlY3RlZCB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGJhc2UgdG8gdXNlIGZvciBhZmZlY3RlZCBjb21tYW5kc1xuICAgKiBJdCB3aWxsIHRha2UgdGhlIHByb2plbiBkZWZhdWx0IGJhc2UgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJhc2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE5hbWVkSW5wdXQgPSB7XG4gIHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRhcmdldERlZmF1bHRDb25maWd1cmF0aW9ucyA9IHtcbiAgW25hbWU6IHN0cmluZ106IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0RGVmYXVsdHMge1xuICAvKipcbiAgICogVGFyZ2V0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IE54IHdpbGwgaW52b2tlIHdoZW4geW91IHJ1biB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0b3I/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgb3B0aW9ucz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBhIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGFzIHRoZSBkZWZhdWx0IGlmIGEgY29uZmlndXJhdGlvbiBpcyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb25maWd1cmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBwcm92aWRlcyBleHRyYSBzZXRzIG9mIHZhbHVlcyB0aGF0IHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIG9wdGlvbnMgbWFwXG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9ucz86IFRhcmdldERlZmF1bHRDb25maWd1cmF0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhcmdldCBydW5zIGNvbnRpbnVvdXNseSB1bnRpbCBzdG9wcGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb250aW51b3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhcmdldCBjYW4gYmUgcnVuIGluIHBhcmFsbGVsIHdpdGggb3RoZXIgdGFza3NcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxpc20/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGlucHV0cz86IHN0cmluZ1tdO1xuXG4gIHJlYWRvbmx5IGRlcGVuZHNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIGdpdmVuIHRhcmdldCBzaG91bGQgYmUgY2FjaGVhYmxlXG4gICAqL1xuICByZWFkb25seSBjYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZ2VuZXJhdG9ycyB0byBydW4gYmVmb3JlIHRoZSB0YXJnZXQgdG8gZW5zdXJlIHRoZSB3b3Jrc3BhY2UgaXMgdXAgdG8gZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3luY0dlbmVyYXRvcnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5uZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG54Q2xvdWRJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgd2hldGhlciB0aGUgY2FjaGUgY2FwdHVyZXMgc3RkZXJyIG9yIGp1c3Qgc3Rkb3V0XG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWF4IG51bWJlciBvZiB0YXJnZXRzIHJhbiBpbiBwYXJhbGxlbFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGxpc3Qgb2YgdGFyZ2V0cy9vcGVyYXRpb25zIHRoYXQgYXJlIGNhY2hlZCBieSBOeFxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVhYmxlT3BlcmF0aW9uczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hlcmUgdGhlIGxvY2FsIGNhY2hlIGlzIHN0b3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hldGhlciB0aGUgTnggQ2FjaGUgc2hvdWxkIGJlIHNraXBwZWRcbiAgICovXG4gIHJlYWRvbmx5IHNraXBOeENhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lcyBhbiBlbmNyeXB0aW9uIGtleSB0byBzdXBwb3J0IGVuZC10by1lbmQgZW5jcnlwdGlvbiBvZiB5b3VyIGNsb3VkIGNhY2hlLlxuICAgKiBZb3UgbWF5IGFsc28gcHJvdmlkZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBrZXkgTlhfQ0xPVURfRU5DUllQVElPTl9LRVlcbiAgICogdGhhdCBjb250YWlucyBhbiBlbmNyeXB0aW9uIGtleSBhcyBpdHMgdmFsdWUuIFRoZSBOeCBDbG91ZCB0YXNrIHJ1bm5lciBub3JtYWxpemVzXG4gICAqIHRoZSBrZXkgbGVuZ3RoLCBzbyBhbnkgbGVuZ3RoIG9mIGtleSBpcyBhY2NlcHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXNrUnVubmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBUYXNrIFJ1bm5lclxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byByZXNvbHZlIHRoZSBydW5uZXJcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBydW5uZXJcbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJ1bm5lck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZVZlcnNpb24ge1xuICByZWFkb25seSBjb252ZW50aW9uYWxDb21taXRzOiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUNoYW5nZWxvZyB7XG4gIHJlYWRvbmx5IGNyZWF0ZVJlbGVhc2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZUNoYW5nZWxvZyB7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZUNoYW5nZWxvZzogV29ya3NwYWNlQ2hhbmdlbG9nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE54UmVsZWFzZSB7XG4gIHJlYWRvbmx5IHByb2plY3RzOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgdmVyc2lvbjogUmVsZWFzZVZlcnNpb247XG4gIHJlYWRvbmx5IGNoYW5nZWxvZz86IFJlbGVhc2VDaGFuZ2Vsb2c7XG59XG5leHBvcnQgaW50ZXJmYWNlIE54Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGJhc2UgY29uZmlnIHRvIGV4dGVuXG4gICAqIEBkZWZhdWx0IG54L3ByZXNldHMvbnBtLmpzb25cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIGBueCBhZmZlY3RlZGBcbiAgICovXG4gIHJlYWRvbmx5IGFmZmVjdGVkOiBBZmZlY3RlZDtcblxuICAvKipcbiAgICogTmFtZWQgaW5wdXRzIHVzZWQgYnkgaW5wdXRzIGRlZmluZWQgaW4gdGFyZ2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZWRJbnB1dDogTmFtZWRJbnB1dDtcblxuICByZWFkb25seSByZWxlYXNlPzogTnhSZWxlYXNlO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnhNb25vcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb25vcmVwby9pbnRlcmZhY2VzL054TW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnhNb25vcmVwb09wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Nx"), exports);
|
|
18
|
+
__exportStar(require("./NxMonorepo"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ub3JlcG8vaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXFCO0FBQ3JCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vTngnO1xuZXhwb3J0ICogZnJvbSAnLi9OeE1vbm9yZXBvJztcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TypeScriptProject } from 'projen/lib/typescript';
|
|
2
|
+
import { NxConfigurations } from './components/NxConfiguration';
|
|
3
|
+
import { NxMonorepoOptions } from './interfaces/NxMonorepo';
|
|
4
|
+
import { Commitzent } from '../components';
|
|
5
|
+
/**
|
|
6
|
+
* NX Monorepo Project
|
|
7
|
+
*
|
|
8
|
+
* @pjid nx-monorepo
|
|
9
|
+
*/
|
|
10
|
+
export declare class NxMonorepo extends TypeScriptProject {
|
|
11
|
+
readonly commitzent?: Commitzent;
|
|
12
|
+
readonly nx: NxConfigurations;
|
|
13
|
+
constructor(options: NxMonorepoOptions);
|
|
14
|
+
addRunManyCommand(target: string, description: string): void;
|
|
15
|
+
addExecRunManyCommand(target: string): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NxMonorepo = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const typescript_1 = require("projen/lib/typescript");
|
|
7
|
+
const NxConfiguration_1 = require("./components/NxConfiguration");
|
|
8
|
+
const publish_release_1 = require("./components/publish-release");
|
|
9
|
+
const common_options_1 = require("../common/common-options");
|
|
10
|
+
/**
|
|
11
|
+
* NX Monorepo Project
|
|
12
|
+
*
|
|
13
|
+
* @pjid nx-monorepo
|
|
14
|
+
*/
|
|
15
|
+
class NxMonorepo extends typescript_1.TypeScriptProject {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
const opts = common_options_1.CommonOptionsConfig.withCommonOptionsDefaults({
|
|
18
|
+
...options,
|
|
19
|
+
});
|
|
20
|
+
super({
|
|
21
|
+
...opts,
|
|
22
|
+
});
|
|
23
|
+
const components = common_options_1.CommonOptionsConfig.withCommonComponents(this, opts);
|
|
24
|
+
this.commitzent = components.commitzent;
|
|
25
|
+
this.addDevDeps('nx');
|
|
26
|
+
this.addDevDeps('@nx/workspace', '@nx/devkit');
|
|
27
|
+
this.addFields({
|
|
28
|
+
private: 'true',
|
|
29
|
+
workspaces: ['packages/*'],
|
|
30
|
+
});
|
|
31
|
+
this.addGitIgnore('.nx');
|
|
32
|
+
new publish_release_1.PublishRelease(this.github, 'PublishRelease');
|
|
33
|
+
this.nx = new NxConfiguration_1.NxConfigurations(this, 'nx.json');
|
|
34
|
+
this.tasks.removeTask('release');
|
|
35
|
+
this.tasks.removeTask('build');
|
|
36
|
+
this.addRunManyCommand('build', 'Full release build for all affected projects');
|
|
37
|
+
this.tasks.removeTask('compile');
|
|
38
|
+
this.addRunManyCommand('compile', 'Only compile for all affected projects');
|
|
39
|
+
this.tasks.removeTask('test');
|
|
40
|
+
this.addRunManyCommand('test', 'Only test for all affected projects');
|
|
41
|
+
this.tasks.removeTask('test:watch');
|
|
42
|
+
this.addTask('test:watch', {
|
|
43
|
+
description: 'Only test for all affected projects',
|
|
44
|
+
steps: [
|
|
45
|
+
{
|
|
46
|
+
exec: 'nx run-many --target=test:watch --output-style=stream --skip-nx-cache --nx-ignore-cycles --nx-bail',
|
|
47
|
+
receiveArgs: true,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
this.tasks.removeTask('eslint');
|
|
52
|
+
this.addRunManyCommand('eslint', 'Run eslint for all affected projects');
|
|
53
|
+
this.tasks.removeTask('package');
|
|
54
|
+
this.addRunManyCommand('package', 'Creates the distribution package for all affected projects');
|
|
55
|
+
this.tasks.removeTask('post-compile');
|
|
56
|
+
this.addRunManyCommand('post-compile', 'Run post-compile for all affected projects');
|
|
57
|
+
this.tasks.removeTask('pre-compile');
|
|
58
|
+
this.addRunManyCommand('pre-compile', 'Run pre-compile for all affected projects');
|
|
59
|
+
this.addTask('graph', {
|
|
60
|
+
description: 'Generate dependency graph',
|
|
61
|
+
steps: [
|
|
62
|
+
{
|
|
63
|
+
exec: 'nx graph',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
this.addTask('release', {
|
|
68
|
+
description: 'Prepare a release from \"main\" branch',
|
|
69
|
+
env: {
|
|
70
|
+
RELEASE: 'true',
|
|
71
|
+
},
|
|
72
|
+
steps: [
|
|
73
|
+
{
|
|
74
|
+
exec: 'rm -fr dist',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
spawn: 'bump',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
spawn: 'build',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
spawn: 'unbump',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
exec: 'git diff --ignore-space-at-eol --exit-code',
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
});
|
|
90
|
+
this.addExecRunManyCommand('install:ci');
|
|
91
|
+
this.addTask('run-many', {
|
|
92
|
+
description: 'Run task against multiple workspace projects',
|
|
93
|
+
steps: [
|
|
94
|
+
{
|
|
95
|
+
exec: 'nx run-many',
|
|
96
|
+
receiveArgs: true,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
});
|
|
100
|
+
this.addTask('nx', {
|
|
101
|
+
description: 'Run Nx against multiple workspace projects',
|
|
102
|
+
steps: [
|
|
103
|
+
{
|
|
104
|
+
exec: 'nx',
|
|
105
|
+
receiveArgs: true,
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
addRunManyCommand(target, description) {
|
|
111
|
+
this.addTask(target, {
|
|
112
|
+
description,
|
|
113
|
+
steps: [
|
|
114
|
+
{
|
|
115
|
+
exec: `nx run-many --target=${target} --output-style=stream --nx-bail`,
|
|
116
|
+
receiveArgs: true,
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
addExecRunManyCommand(target) {
|
|
122
|
+
const task = this.tasks.tryFind(target);
|
|
123
|
+
if (task) {
|
|
124
|
+
task.exec(`nx run-many --target=${target} --output-style=stream --nx-bail`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.NxMonorepo = NxMonorepo;
|
|
129
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
130
|
+
NxMonorepo[_a] = { fqn: "@jttc/projen-project-types.NxMonorepo", version: "1.0.0-beta.10" };
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ub3JlcG8vbW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBMEQ7QUFDMUQsa0VBQWdFO0FBQ2hFLGtFQUE4RDtBQUU5RCw2REFBK0Q7QUFHL0Q7Ozs7R0FJRztBQUNILE1BQWEsVUFBVyxTQUFRLDhCQUFpQjtJQUcvQyxZQUFZLE9BQTBCO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLG9DQUFtQixDQUFDLHlCQUF5QixDQUFDO1lBQ3pELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQztZQUNKLEdBQUcsSUFBSTtTQUNSLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLG9DQUFtQixDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsT0FBTyxFQUFFLE1BQU07WUFDZixVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QixJQUFJLGdDQUFjLENBQUMsSUFBSSxDQUFDLE1BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFV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O2dCQUNMO29CQUNFLElBQUksRUFBRSx3QkFBd0IsTUFBTSxrQ0FBa0M7b0JBQ3RFLFdBQVcsRUFBRSxJQUFJO2lCQUNsQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLENBQ1Asd0JBQXdCLE1BQU0sa0NBQWtDLENBQ2pFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs7QUFwSkgsZ0NBcUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tICdwcm9qZW4vbGliL3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgTnhDb25maWd1cmF0aW9ucyB9IGZyb20gJy4vY29tcG9uZW50cy9OeENvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgUHVibGlzaFJlbGVhc2UgfSBmcm9tICcuL2NvbXBvbmVudHMvcHVibGlzaC1yZWxlYXNlJztcbmltcG9ydCB7IE54TW9ub3JlcG9PcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL054TW9ub3JlcG8nO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9uc0NvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBDb21taXR6ZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbi8qKlxuICogTlggTW9ub3JlcG8gUHJvamVjdFxuICpcbiAqIEBwamlkIG54LW1vbm9yZXBvXG4gKi9cbmV4cG9ydCBjbGFzcyBOeE1vbm9yZXBvIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3Qge1xuICByZWFkb25seSBjb21taXR6ZW50PzogQ29tbWl0emVudDtcbiAgcmVhZG9ubHkgbng6IE54Q29uZmlndXJhdGlvbnM7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE54TW9ub3JlcG9PcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0cyA9IENvbW1vbk9wdGlvbnNDb25maWcud2l0aENvbW1vbk9wdGlvbnNEZWZhdWx0cyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gQ29tbW9uT3B0aW9uc0NvbmZpZy53aXRoQ29tbW9uQ29tcG9uZW50cyh0aGlzLCBvcHRzKTtcbiAgICB0aGlzLmNvbW1pdHplbnQgPSBjb21wb25lbnRzLmNvbW1pdHplbnQ7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoJ254Jyk7XG4gICAgdGhpcy5hZGREZXZEZXBzKCdAbngvd29ya3NwYWNlJywgJ0BueC9kZXZraXQnKTtcblxuICAgIHRoaXMuYWRkRmllbGRzKHtcbiAgICAgIHByaXZhdGU6ICd0cnVlJyxcbiAgICAgIHdvcmtzcGFjZXM6IFsncGFja2FnZXMvKiddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5ueCcpO1xuXG4gICAgbmV3IFB1Ymxpc2hSZWxlYXNlKHRoaXMuZ2l0aHViISwgJ1B1Ymxpc2hSZWxlYXNlJyk7XG5cbiAgICB0aGlzLm54ID0gbmV3IE54Q29uZmlndXJhdGlvbnModGhpcywgJ254Lmpzb24nKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncmVsZWFzZScpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnYnVpbGQnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKFxuICAgICAgJ2J1aWxkJyxcbiAgICAgICdGdWxsIHJlbGVhc2UgYnVpbGQgZm9yIGFsbCBhZmZlY3RlZCBwcm9qZWN0cycsXG4gICAgKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnY29tcGlsZScpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoJ2NvbXBpbGUnLCAnT25seSBjb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygndGVzdCcpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoJ3Rlc3QnLCAnT25seSB0ZXN0IGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygndGVzdDp3YXRjaCcpO1xuICAgIHRoaXMuYWRkVGFzaygndGVzdDp3YXRjaCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnT25seSB0ZXN0IGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdueCBydW4tbWFueSAtLXRhcmdldD10ZXN0OndhdGNoIC0tb3V0cHV0LXN0eWxlPXN0cmVhbSAtLXNraXAtbngtY2FjaGUgLS1ueC1pZ25vcmUtY3ljbGVzIC0tbngtYmFpbCcsXG4gICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlc2xpbnQnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKCdlc2xpbnQnLCAnUnVuIGVzbGludCBmb3IgYWxsIGFmZmVjdGVkIHByb2plY3RzJyk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3BhY2thZ2UnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKFxuICAgICAgJ3BhY2thZ2UnLFxuICAgICAgJ0NyZWF0ZXMgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3Bvc3QtY29tcGlsZScpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoXG4gICAgICAncG9zdC1jb21waWxlJyxcbiAgICAgICdSdW4gcG9zdC1jb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3ByZS1jb21waWxlJyk7XG4gICAgdGhpcy5hZGRSdW5NYW55Q29tbWFuZChcbiAgICAgICdwcmUtY29tcGlsZScsXG4gICAgICAnUnVuIHByZS1jb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ2dyYXBoJywge1xuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBkZXBlbmRlbmN5IGdyYXBoJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnbnggZ3JhcGgnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygncmVsZWFzZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJlcGFyZSBhIHJlbGVhc2UgZnJvbSBcXFwibWFpblxcXCIgYnJhbmNoJyxcbiAgICAgIGVudjoge1xuICAgICAgICBSRUxFQVNFOiAndHJ1ZScsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdybSAtZnIgZGlzdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGF3bjogJ2J1bXAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc3Bhd246ICdidWlsZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGF3bjogJ3VuYnVtcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnZ2l0IGRpZmYgLS1pZ25vcmUtc3BhY2UtYXQtZW9sIC0tZXhpdC1jb2RlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4ZWNSdW5NYW55Q29tbWFuZCgnaW5zdGFsbDpjaScpO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdydW4tbWFueScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRhc2sgYWdhaW5zdCBtdWx0aXBsZSB3b3Jrc3BhY2UgcHJvamVjdHMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdueCBydW4tbWFueScsXG4gICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdueCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIE54IGFnYWluc3QgbXVsdGlwbGUgd29ya3NwYWNlIHByb2plY3RzJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnbngnLFxuICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJ1bk1hbnlDb21tYW5kKHRhcmdldDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGRUYXNrKHRhcmdldCwge1xuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYG54IHJ1bi1tYW55IC0tdGFyZ2V0PSR7dGFyZ2V0fSAtLW91dHB1dC1zdHlsZT1zdHJlYW0gLS1ueC1iYWlsYCxcbiAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhZGRFeGVjUnVuTWFueUNvbW1hbmQodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy50YXNrcy50cnlGaW5kKHRhcmdldCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRhc2suZXhlYyhcbiAgICAgICAgYG54IHJ1bi1tYW55IC0tdGFyZ2V0PSR7dGFyZ2V0fSAtLW91dHB1dC1zdHlsZT1zdHJlYW0gLS1ueC1iYWlsYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./terraform-deploy-github-workflow"), exports);
|
|
18
|
+
__exportStar(require("./terraform-plan-github-workflow"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVycmFmb3JtL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFFQUFtRDtBQUNuRCxtRUFBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlcnJhZm9ybS1kZXBsb3ktZ2l0aHViLXdvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vdGVycmFmb3JtLXBsYW4tZ2l0aHViLXdvcmtmbG93JztcbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component, Project } from 'projen';
|
|
2
|
+
/**
|
|
3
|
+
* Options for TerraformDeployGithubWorkflow component.
|
|
4
|
+
*/
|
|
5
|
+
export interface TerraformDeployGithubWorkflowOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Terraform version to use in the workflow.
|
|
8
|
+
* @default "1.6.0"
|
|
9
|
+
*/
|
|
10
|
+
readonly terraformVersion?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Name of the workflow.
|
|
13
|
+
* @default "terraform-deploy"
|
|
14
|
+
*/
|
|
15
|
+
readonly workflowName?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* GitHub workflow component for Terraform deployment.
|
|
19
|
+
* Creates a workflow that validates, plans, and applies Terraform changes.
|
|
20
|
+
*
|
|
21
|
+
* This component is designed for Terraform stack projects that need deployment,
|
|
22
|
+
* not for module projects that need release workflows.
|
|
23
|
+
*/
|
|
24
|
+
export declare class TerraformDeployGithubWorkflow extends Component {
|
|
25
|
+
constructor(project: Project, options?: TerraformDeployGithubWorkflowOptions);
|
|
26
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TerraformDeployGithubWorkflow = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const projen_1 = require("projen");
|
|
7
|
+
const github_1 = require("projen/lib/github");
|
|
8
|
+
const workflows_model_1 = require("projen/lib/github/workflows-model");
|
|
9
|
+
/**
|
|
10
|
+
* GitHub workflow component for Terraform deployment.
|
|
11
|
+
* Creates a workflow that validates, plans, and applies Terraform changes.
|
|
12
|
+
*
|
|
13
|
+
* This component is designed for Terraform stack projects that need deployment,
|
|
14
|
+
* not for module projects that need release workflows.
|
|
15
|
+
*/
|
|
16
|
+
class TerraformDeployGithubWorkflow extends projen_1.Component {
|
|
17
|
+
constructor(project, options = {}) {
|
|
18
|
+
super(project);
|
|
19
|
+
// Get or create GitHub component - use root project for subprojects, current project otherwise
|
|
20
|
+
const targetProject = project.parent ? project.root : project;
|
|
21
|
+
let github = targetProject.components.find((c) => c.constructor.name === 'GitHub');
|
|
22
|
+
if (!github) {
|
|
23
|
+
github = new github_1.GitHub(targetProject);
|
|
24
|
+
}
|
|
25
|
+
const workflowName = options.workflowName ?? 'terraform-deploy';
|
|
26
|
+
const terraformVersion = options.terraformVersion ?? '1.6.0';
|
|
27
|
+
// Use project outdir for subprojects, current directory for root projects
|
|
28
|
+
const workingDirectory = project.parent ? project.outdir : '.';
|
|
29
|
+
const workflow = github.addWorkflow(workflowName);
|
|
30
|
+
workflow.on({
|
|
31
|
+
push: {
|
|
32
|
+
branches: ['main'],
|
|
33
|
+
paths: ['**.tf', '**.tfvars'],
|
|
34
|
+
},
|
|
35
|
+
workflowDispatch: {},
|
|
36
|
+
});
|
|
37
|
+
workflow.addJob('terraform', {
|
|
38
|
+
name: 'Terraform',
|
|
39
|
+
runsOn: ['ubuntu-latest'],
|
|
40
|
+
env: {
|
|
41
|
+
tf_actions_working_dir: workingDirectory,
|
|
42
|
+
},
|
|
43
|
+
defaults: {
|
|
44
|
+
run: {
|
|
45
|
+
workingDirectory: '${{ env.tf_actions_working_dir }}',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
permissions: {
|
|
49
|
+
contents: workflows_model_1.JobPermission.READ,
|
|
50
|
+
pullRequests: workflows_model_1.JobPermission.WRITE,
|
|
51
|
+
},
|
|
52
|
+
steps: [
|
|
53
|
+
{
|
|
54
|
+
name: 'Checkout',
|
|
55
|
+
uses: 'actions/checkout@v4',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Setup Terraform',
|
|
59
|
+
uses: 'hashicorp/setup-terraform@v3',
|
|
60
|
+
with: {
|
|
61
|
+
terraform_version: terraformVersion,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Terraform Format',
|
|
66
|
+
run: 'terraform fmt -check',
|
|
67
|
+
continueOnError: true,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Terraform Init',
|
|
71
|
+
run: 'terraform init',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'Terraform Validate',
|
|
75
|
+
run: 'terraform validate',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'Terraform Plan',
|
|
79
|
+
run: 'terraform plan -input=false',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Terraform Apply',
|
|
83
|
+
run: 'terraform apply -auto-approve -input=false',
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.TerraformDeployGithubWorkflow = TerraformDeployGithubWorkflow;
|
|
90
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
91
|
+
TerraformDeployGithubWorkflow[_a] = { fqn: "@jttc/projen-project-types.TerraformDeployGithubWorkflow", version: "1.0.0-beta.10" };
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWRlcGxveS1naXRodWItd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVycmFmb3JtL2NvbXBvbmVudHMvdGVycmFmb3JtLWRlcGxveS1naXRodWItd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBNEM7QUFDNUMsOENBQTJDO0FBQzNDLHVFQUFrRTtBQW1CbEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxrQkFBUztJQUMxRCxZQUNFLE9BQWdCLEVBQ2hCLFVBQWdELEVBQUU7UUFFbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsK0ZBQStGO1FBQy9GLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM5RCxJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDeEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDN0IsQ0FBQztRQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQztRQUNoRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUM7UUFFN0QsMEVBQTBFO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRS9ELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEQsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNWLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7YUFDOUI7WUFDRCxnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzNCLElBQUksRUFBRSxXQUFXO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUN6QixHQUFHLEVBQUU7Z0JBQ0gsc0JBQXNCLEVBQUUsZ0JBQWdCO2FBQ3pDO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEdBQUcsRUFBRTtvQkFDSCxnQkFBZ0IsRUFBRSxtQ0FBbUM7aUJBQ3REO2FBQ0Y7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsSUFBSTtnQkFDNUIsWUFBWSxFQUFFLCtCQUFhLENBQUMsS0FBSzthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLDhCQUE4QjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLGdCQUFnQjtxQkFDcEM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsR0FBRyxFQUFFLHNCQUFzQjtvQkFDM0IsZUFBZSxFQUFFLElBQUk7aUJBQ3RCO2dCQUNEO29CQUNFLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLEdBQUcsRUFBRSxnQkFBZ0I7aUJBQ3RCO2dCQUNEO29CQUNFLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLEdBQUcsRUFBRSxvQkFBb0I7aUJBQzFCO2dCQUNEO29CQUNFLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLEdBQUcsRUFBRSw2QkFBNkI7aUJBQ25DO2dCQUNEO29CQUNFLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLEdBQUcsRUFBRSw0Q0FBNEM7aUJBQ2xEO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxGSCxzRUFtRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgVGVycmFmb3JtRGVwbG95R2l0aHViV29ya2Zsb3cgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUZXJyYWZvcm0gdmVyc2lvbiB0byB1c2UgaW4gdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcIjEuNi4wXCJcbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInRlcnJhZm9ybS1kZXBsb3lcIlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdpdEh1YiB3b3JrZmxvdyBjb21wb25lbnQgZm9yIFRlcnJhZm9ybSBkZXBsb3ltZW50LlxuICogQ3JlYXRlcyBhIHdvcmtmbG93IHRoYXQgdmFsaWRhdGVzLCBwbGFucywgYW5kIGFwcGxpZXMgVGVycmFmb3JtIGNoYW5nZXMuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgZGVzaWduZWQgZm9yIFRlcnJhZm9ybSBzdGFjayBwcm9qZWN0cyB0aGF0IG5lZWQgZGVwbG95bWVudCxcbiAqIG5vdCBmb3IgbW9kdWxlIHByb2plY3RzIHRoYXQgbmVlZCByZWxlYXNlIHdvcmtmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogUHJvamVjdCxcbiAgICBvcHRpb25zOiBUZXJyYWZvcm1EZXBsb3lHaXRodWJXb3JrZmxvd09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBHZXQgb3IgY3JlYXRlIEdpdEh1YiBjb21wb25lbnQgLSB1c2Ugcm9vdCBwcm9qZWN0IGZvciBzdWJwcm9qZWN0cywgY3VycmVudCBwcm9qZWN0IG90aGVyd2lzZVxuICAgIGNvbnN0IHRhcmdldFByb2plY3QgPSBwcm9qZWN0LnBhcmVudCA/IHByb2plY3Qucm9vdCA6IHByb2plY3Q7XG4gICAgbGV0IGdpdGh1YiA9IHRhcmdldFByb2plY3QuY29tcG9uZW50cy5maW5kKFxuICAgICAgKGMpID0+IGMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0dpdEh1YicsXG4gICAgKSBhcyBHaXRIdWI7XG4gICAgaWYgKCFnaXRodWIpIHtcbiAgICAgIGdpdGh1YiA9IG5ldyBHaXRIdWIodGFyZ2V0UHJvamVjdCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lID0gb3B0aW9ucy53b3JrZmxvd05hbWUgPz8gJ3RlcnJhZm9ybS1kZXBsb3knO1xuICAgIGNvbnN0IHRlcnJhZm9ybVZlcnNpb24gPSBvcHRpb25zLnRlcnJhZm9ybVZlcnNpb24gPz8gJzEuNi4wJztcblxuICAgIC8vIFVzZSBwcm9qZWN0IG91dGRpciBmb3Igc3VicHJvamVjdHMsIGN1cnJlbnQgZGlyZWN0b3J5IGZvciByb290IHByb2plY3RzXG4gICAgY29uc3Qgd29ya2luZ0RpcmVjdG9yeSA9IHByb2plY3QucGFyZW50ID8gcHJvamVjdC5vdXRkaXIgOiAnLic7XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IGdpdGh1Yi5hZGRXb3JrZmxvdyh3b3JrZmxvd05hbWUpO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogWydtYWluJ10sXG4gICAgICAgIHBhdGhzOiBbJyoqLnRmJywgJyoqLnRmdmFycyddLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCd0ZXJyYWZvcm0nLCB7XG4gICAgICBuYW1lOiAnVGVycmFmb3JtJyxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBlbnY6IHtcbiAgICAgICAgdGZfYWN0aW9uc193b3JraW5nX2Rpcjogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0czoge1xuICAgICAgICBydW46IHtcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiAnJHt7IGVudi50Zl9hY3Rpb25zX3dvcmtpbmdfZGlyIH19JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NldHVwIFRlcnJhZm9ybScsXG4gICAgICAgICAgdXNlczogJ2hhc2hpY29ycC9zZXR1cC10ZXJyYWZvcm1AdjMnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIHRlcnJhZm9ybV92ZXJzaW9uOiB0ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnVGVycmFmb3JtIEZvcm1hdCcsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIGZtdCAtY2hlY2snLFxuICAgICAgICAgIGNvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gSW5pdCcsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIGluaXQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1RlcnJhZm9ybSBWYWxpZGF0ZScsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIHZhbGlkYXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gUGxhbicsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIHBsYW4gLWlucHV0PWZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gQXBwbHknLFxuICAgICAgICAgIHJ1bjogJ3RlcnJhZm9ybSBhcHBseSAtYXV0by1hcHByb3ZlIC1pbnB1dD1mYWxzZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, Project } from 'projen';
|
|
2
|
+
/**
|
|
3
|
+
* Options for TerraformPlanGithubWorkflow component.
|
|
4
|
+
*/
|
|
5
|
+
export interface TerraformPlanGithubWorkflowOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Terraform version to use in the workflow.
|
|
8
|
+
* @default "1.6.0"
|
|
9
|
+
*/
|
|
10
|
+
readonly terraformVersion?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Name of the workflow.
|
|
13
|
+
* @default "terraform-plan"
|
|
14
|
+
*/
|
|
15
|
+
readonly workflowName?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Working directory for Terraform commands.
|
|
18
|
+
* @default "."
|
|
19
|
+
*/
|
|
20
|
+
readonly workingDirectory?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* GitHub workflow component for Terraform plan on Pull Requests.
|
|
24
|
+
* Creates a workflow that validates, plans Terraform changes and comments results on PRs.
|
|
25
|
+
*
|
|
26
|
+
* This component is designed for Terraform stack projects to show plan results
|
|
27
|
+
* in Pull Requests without actually applying changes.
|
|
28
|
+
*/
|
|
29
|
+
export declare class TerraformPlanGithubWorkflow extends Component {
|
|
30
|
+
constructor(project: Project, options?: TerraformPlanGithubWorkflowOptions);
|
|
31
|
+
}
|