nx-terraform 0.7.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dependencies/createDependencies.js +9 -7
- package/src/dependencies/createDependencies.js.map +1 -1
- package/src/generators/sync-terraform-metadata/sync-terraform-metadata.js +9 -14
- package/src/generators/sync-terraform-metadata/sync-terraform-metadata.js.map +1 -1
- package/src/generators/terraform-module/terraform-module.js +12 -5
- package/src/generators/terraform-module/terraform-module.js.map +1 -1
- package/src/targets/createNodes.js +20 -21
- package/src/targets/createNodes.js.map +1 -1
- package/src/targets/default.d.ts +4 -4
- package/src/targets/default.js +34 -30
- package/src/targets/default.js.map +1 -1
- package/src/targets/inferedTasks.js +9 -9
- package/src/targets/inferedTasks.js.map +1 -1
- package/src/targets/type.d.ts +10 -5
- package/src/types.d.ts +4 -2
- package/README.md +0 -558
- package/src/generators/init/README.md +0 -90
- package/src/generators/preset/README.md +0 -176
- package/src/generators/sync-terraform-metadata/README.md +0 -106
- package/src/generators/terraform-backend/README.md +0 -215
- package/src/generators/terraform-module/README.md +0 -299
package/package.json
CHANGED
|
@@ -5,7 +5,6 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const path = require("node:path");
|
|
6
6
|
const DependenciesTerraformFileParser_1 = require("./DependenciesTerraformFileParser");
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
|
-
const constants_1 = require("../constants");
|
|
9
8
|
/**
|
|
10
9
|
* Creates dependencies between Terraform projects by:
|
|
11
10
|
* 1. Creating static dependencies from projects to their backend projects (from project.json metadata)
|
|
@@ -13,13 +12,16 @@ const constants_1 = require("../constants");
|
|
|
13
12
|
*/
|
|
14
13
|
const createDependencies = (_, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
15
14
|
var _a, e_1, _b, _c;
|
|
16
|
-
var _d, _e
|
|
15
|
+
var _d, _e;
|
|
17
16
|
const results = [];
|
|
18
17
|
for (const [projectName, projectConfig] of Object.entries(ctx.projects)) {
|
|
19
18
|
// ----------------------------------------------------------------
|
|
20
19
|
// Static dependencies from projects to their backend projects
|
|
20
|
+
// (read from terraform-init target's metadata.backendProject)
|
|
21
21
|
// ----------------------------------------------------------------
|
|
22
|
-
const
|
|
22
|
+
const initTarget = (_d = projectConfig.targets) === null || _d === void 0 ? void 0 : _d['terraform-init'];
|
|
23
|
+
const initMetadata = initTarget === null || initTarget === void 0 ? void 0 : initTarget.metadata;
|
|
24
|
+
const backendProject = initMetadata === null || initMetadata === void 0 ? void 0 : initMetadata.backendProject;
|
|
23
25
|
if (backendProject) {
|
|
24
26
|
// Verify backend project exists
|
|
25
27
|
if (ctx.projects[backendProject]) {
|
|
@@ -30,13 +32,13 @@ const createDependencies = (_, ctx) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
30
32
|
// Static dependencies from projects to their module projects
|
|
31
33
|
// ----------------------------------------------------------------
|
|
32
34
|
// Get files to process for this project
|
|
33
|
-
const filesToProcess = (
|
|
35
|
+
const filesToProcess = (_e = ctx.filesToProcess.projectFileMap[projectName]) !== null && _e !== void 0 ? _e : [];
|
|
34
36
|
// Use DependenciesTerraformFileParser to parse all files
|
|
35
37
|
const parser = new DependenciesTerraformFileParser_1.DependenciesTerraformFileParser(filesToProcess, ctx.workspaceRoot);
|
|
36
38
|
try {
|
|
37
|
-
for (var
|
|
39
|
+
for (var _f = true, parser_1 = (e_1 = void 0, tslib_1.__asyncValues(parser)), parser_1_1; parser_1_1 = yield parser_1.next(), _a = parser_1_1.done, !_a; _f = true) {
|
|
38
40
|
_c = parser_1_1.value;
|
|
39
|
-
|
|
41
|
+
_f = false;
|
|
40
42
|
const terraformFile = _c;
|
|
41
43
|
// Extract module blocks and process each one
|
|
42
44
|
for (const { source: sourcePath } of terraformFile.extractModules()) {
|
|
@@ -63,7 +65,7 @@ const createDependencies = (_, ctx) => tslib_1.__awaiter(void 0, void 0, void 0,
|
|
|
63
65
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
64
66
|
finally {
|
|
65
67
|
try {
|
|
66
|
-
if (!
|
|
68
|
+
if (!_f && !_a && (_b = parser_1.return)) yield _b.call(parser_1);
|
|
67
69
|
}
|
|
68
70
|
finally { if (e_1) throw e_1.error; }
|
|
69
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDependencies.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/dependencies/createDependencies.ts"],"names":[],"mappings":";;;;AAKA,kCAAkC;AAElC,uFAAoF;AACpF,mCAIiB;
|
|
1
|
+
{"version":3,"file":"createDependencies.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/dependencies/createDependencies.ts"],"names":[],"mappings":";;;;AAKA,kCAAkC;AAElC,uFAAoF;AACpF,mCAIiB;AAEjB;;;;GAIG;AACI,MAAM,kBAAkB,GAE3B,CAAO,CAAC,EAAE,GAA8B,EAAE,EAAE;;;IAC9C,MAAM,OAAO,GAAgC,EAAE,CAAC;IAEhD,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,mEAAmE;QACnE,8DAA8D;QAC9D,8DAA8D;QAC9D,mEAAmE;QACnE,MAAM,UAAU,GAAG,MAAA,aAAa,CAAC,OAAO,0CAAG,gBAAgB,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAEpB,CAAC;QACd,MAAM,cAAc,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAC;QAEpD,IAAI,cAAc,EAAE,CAAC;YACnB,gCAAgC;YAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,IAAA,gCAAwB,EACtB,IAAA,8BAAsB,EACpB,WAAW,EACX,cAAc,EACd,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAC9C,EACD,GAAG,EACH,OAAO,CACR,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,6DAA6D;QAC7D,mEAAmE;QAEnE,wCAAwC;QACxC,MAAM,cAAc,GAAG,MAAA,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,mCAAI,EAAE,CAAC;QAE5E,yDAAyD;QACzD,MAAM,MAAM,GAAG,IAAI,iEAA+B,CAChD,cAAc,EACd,GAAG,CAAC,aAAa,CAClB,CAAC;;YAEF,KAAkC,eAAA,0BAAA,sBAAA,MAAM,CAAA,CAAA,YAAA,4EAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAA7B,MAAM,aAAa,KAAA,CAAA;gBAC5B,6CAA6C;gBAC7C,KAAK,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;oBACpE,uCAAuC;oBACvC,IAAI,CAAC,IAAA,mBAAW,EAAC,UAAU,CAAC,EAAE,CAAC;wBAC7B,SAAS;oBACX,CAAC;oBAED,qEAAqE;oBACrE,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEzD,mDAAmD;oBACnD,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;wBACtD,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,SAAS,CAAC;oBAEd,8DAA8D;oBAC9D,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;wBACpD,SAAS;oBACX,CAAC;oBAED,iDAAiD;oBACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CACpC,GAAG,CAAC,aAAa,EACjB,aAAa,CAAC,QAAQ,CACvB,CAAC;oBAEF,IAAA,gCAAwB,EACtB,IAAA,8BAAsB,EAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,CAAC,EACpE,GAAG,EACH,OAAO,CACR,CAAC;gBACJ,CAAC;YACH,CAAC;;;;;;;;;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA,CAAC;AAjFW,QAAA,kBAAkB,sBAiF7B"}
|
|
@@ -10,7 +10,7 @@ const constants_1 = require("../../constants");
|
|
|
10
10
|
function syncTerraformMetadataGenerator(tree, _) {
|
|
11
11
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
12
|
var _a, e_1, _b, _c;
|
|
13
|
-
var _d, _e
|
|
13
|
+
var _d, _e;
|
|
14
14
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
15
15
|
const updatedProjects = new Set();
|
|
16
16
|
for (const [projectName, project] of projects) {
|
|
@@ -32,9 +32,9 @@ function syncTerraformMetadataGenerator(tree, _) {
|
|
|
32
32
|
// Use TreeTerraformFileParser to parse all .tf files
|
|
33
33
|
const parser = new TreeTerraformFileParser_1.TreeTerraformFileParser(tree, projectRoot);
|
|
34
34
|
try {
|
|
35
|
-
for (var
|
|
35
|
+
for (var _f = true, parser_1 = (e_1 = void 0, tslib_1.__asyncValues(parser)), parser_1_1; parser_1_1 = yield parser_1.next(), _a = parser_1_1.done, !_a; _f = true) {
|
|
36
36
|
_c = parser_1_1.value;
|
|
37
|
-
|
|
37
|
+
_f = false;
|
|
38
38
|
const terraformFile = _c;
|
|
39
39
|
// Extract backend blocks (overwrite on each iteration to match original behavior)
|
|
40
40
|
projectState.backends.push(...terraformFile.extractBackends());
|
|
@@ -49,24 +49,19 @@ function syncTerraformMetadataGenerator(tree, _) {
|
|
|
49
49
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
50
|
finally {
|
|
51
51
|
try {
|
|
52
|
-
if (!
|
|
52
|
+
if (!_f && !_a && (_b = parser_1.return)) yield _b.call(parser_1);
|
|
53
53
|
}
|
|
54
54
|
finally { if (e_1) throw e_1.error; }
|
|
55
55
|
}
|
|
56
56
|
// Determine hasBackend from collected backends
|
|
57
57
|
const hasBackend = projectState.backends.length > 0;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// 1. Project type is 'module' or 'stateful' (not 'backend')
|
|
62
|
-
// 2. No backendProject is set (backendProject takes precedence)
|
|
63
|
-
if (!currentBackendProject &&
|
|
64
|
-
(nxTerraformProjectMetadata.projectType === 'module' ||
|
|
65
|
-
nxTerraformProjectMetadata.projectType === 'stateful')) {
|
|
58
|
+
// Only update project type for module/stateful projects (not backend)
|
|
59
|
+
if (nxTerraformProjectMetadata.projectType === 'module' ||
|
|
60
|
+
nxTerraformProjectMetadata.projectType === 'stateful') {
|
|
66
61
|
const expectedTerraformProjectType = hasBackend ? 'stateful' : 'module';
|
|
67
62
|
if (nxTerraformProjectMetadata.projectType !==
|
|
68
63
|
expectedTerraformProjectType) {
|
|
69
|
-
(0, devkit_1.updateProjectConfiguration)(tree, projectName, Object.assign(Object.assign({}, projectConfig), { metadata: Object.assign(Object.assign({}, projectConfig.metadata), { [constants_1.PLUGIN_NAME]: Object.assign(Object.assign({}, (
|
|
64
|
+
(0, devkit_1.updateProjectConfiguration)(tree, projectName, Object.assign(Object.assign({}, projectConfig), { metadata: Object.assign(Object.assign({}, projectConfig.metadata), { [constants_1.PLUGIN_NAME]: Object.assign(Object.assign({}, (_e = projectConfig.metadata) === null || _e === void 0 ? void 0 : _e[constants_1.PLUGIN_NAME]), { projectType: expectedTerraformProjectType }) }) }));
|
|
70
65
|
updatedProjects.add(projectName);
|
|
71
66
|
}
|
|
72
67
|
}
|
|
@@ -82,7 +77,7 @@ function syncTerraformMetadataGenerator(tree, _) {
|
|
|
82
77
|
}
|
|
83
78
|
}
|
|
84
79
|
}
|
|
85
|
-
catch (
|
|
80
|
+
catch (_g) {
|
|
86
81
|
// Skip projects that can't be processed, continue with next project
|
|
87
82
|
continue;
|
|
88
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-terraform-metadata.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/sync-terraform-metadata/sync-terraform-metadata.ts"],"names":[],"mappings":";;AAuBA,
|
|
1
|
+
{"version":3,"file":"sync-terraform-metadata.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/sync-terraform-metadata/sync-terraform-metadata.ts"],"names":[],"mappings":";;AAuBA,wEA+FC;;AAtHD,uCAKoB;AACpB,+BAA4B;AAG5B,6EAA0E;AAC1E,iFAA8E;AAE9E,+CAA8C;AAW9C,SAAsB,8BAA8B,CAClD,IAAU,EACV,CAAuC;;;;QAEvC,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBACjC,mFAAmF;gBACnF,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAClE,MAAM,0BAA0B,GAAG,MAAA,aAAa,CAAC,QAAQ,0CAAG,uBAAW,CAAC,CAAC;gBAEzE,2FAA2F;gBAC3F,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAChC,SAAS;gBACX,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,YAAY,GAAiB;oBACjC,QAAQ,EAAE,EAAE;oBACZ,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,IAAI;iBACnB,CAAC;gBAEF,qDAAqD;gBACrD,MAAM,MAAM,GAAG,IAAI,iDAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;;oBAE9D,KAAkC,eAAA,0BAAA,sBAAA,MAAM,CAAA,CAAA,YAAA,4EAAE,CAAC;wBAAT,sBAAM;wBAAN,WAAM;wBAA7B,MAAM,aAAa,KAAA,CAAA;wBAC5B,kFAAkF;wBAClF,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC;wBAE/D,iCAAiC;wBACjC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;wBAE7D,8DAA8D;wBAC9D,IAAI,aAAa,YAAY,6CAAqB,EAAE,CAAC;4BACnD,YAAY,CAAC,YAAY,GAAG,aAAa,CAAC;wBAC5C,CAAC;oBACH,CAAC;;;;;;;;;gBAED,+CAA+C;gBAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEpD,sEAAsE;gBACtE,IACE,0BAA0B,CAAC,WAAW,KAAK,QAAQ;oBACnD,0BAA0B,CAAC,WAAW,KAAK,UAAU,EACrD,CAAC;oBACD,MAAM,4BAA4B,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACxE,IACE,0BAA0B,CAAC,WAAW;wBACtC,4BAA4B,EAC5B,CAAC;wBACD,IAAA,mCAA0B,EAAC,IAAI,EAAE,WAAW,kCACvC,aAAa,KAChB,QAAQ,kCACH,aAAa,CAAC,QAAQ,KACzB,CAAC,uBAAW,CAAC,kCACR,MAAA,aAAa,CAAC,QAAQ,0CAAG,uBAAW,CAAC,KACxC,WAAW,EAAE,4BAA4B,UAG7C,CAAC;wBACH,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,uCAAuC;gBACvC,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;oBAC9B,sEAAsE;oBACtE,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAE3D,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;oBACxD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GACxB,YAAY,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;oBAEpD,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;wBACpC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,WAAM,CAAC;gBACP,oEAAoE;gBACpE,SAAS;YACX,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,OAAO;YACL,gBAAgB,EAAE,6CAA6C,KAAK,CAAC,IAAI,CACvE,eAAe,CAChB,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB;SACnC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,8BAA8B,CAAC"}
|
|
@@ -9,16 +9,23 @@ const constants_1 = require("../../constants");
|
|
|
9
9
|
function terraformModuleGenerator(tree, options) {
|
|
10
10
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
11
|
const projectRoot = `packages/${options.name}`;
|
|
12
|
-
// Create project configuration
|
|
12
|
+
// Create project configuration.
|
|
13
|
+
// backendProject in target metadata (not in options) so nx:run-commands doesn't pass it to terraform CLI.
|
|
13
14
|
const projectConfig = {
|
|
14
15
|
root: projectRoot,
|
|
15
16
|
projectType: 'application',
|
|
16
17
|
sourceRoot: `${projectRoot}`,
|
|
17
|
-
targets: {},
|
|
18
|
+
targets: Object.assign({}, (options.backendProject && {
|
|
19
|
+
'terraform-init': {
|
|
20
|
+
metadata: {
|
|
21
|
+
backendProject: options.backendProject,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
})),
|
|
18
25
|
metadata: {
|
|
19
|
-
[constants_1.PLUGIN_NAME]:
|
|
20
|
-
|
|
21
|
-
}
|
|
26
|
+
[constants_1.PLUGIN_NAME]: {
|
|
27
|
+
projectType: 'module',
|
|
28
|
+
},
|
|
22
29
|
},
|
|
23
30
|
};
|
|
24
31
|
// Note: Implicit dependencies to backend projects are now handled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terraform-module.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/terraform-module/terraform-module.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"terraform-module.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/terraform-module/terraform-module.ts"],"names":[],"mappings":";;AAeA,4DA8CC;;AA7DD,uCAMoB;AACpB,6BAA6B;AAK7B,mCAAoD;AACpD,+CAA8C;AAE9C,SAAsB,wBAAwB,CAC5C,IAAU,EACV,OAAuC;;QAEvC,MAAM,WAAW,GAAG,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QAE/C,gCAAgC;QAChC,0GAA0G;QAC1G,MAAM,aAAa,GAAyB;YAC1C,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,GAAG,WAAW,EAAE;YAC5B,OAAO,oBACF,CAAC,OAAO,CAAC,cAAc,IAAI;gBAC5B,gBAAgB,EAAE;oBAChB,QAAQ,EAAE;wBACR,cAAc,EAAE,OAAO,CAAC,cAAc;qBACvC;iBACF;aACF,CAAC,CACH;YACD,QAAQ,EAAE;gBACR,CAAC,uBAAW,CAAC,EAAE;oBACb,WAAW,EAAE,QAAQ;iBACtB;aACF;SACF,CAAC;QAEF,kEAAkE;QAClE,yEAAyE;QAEzE,IAAA,gCAAuB,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE3D,4CAA4C;QAC5C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1D,6DAA6D;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,SAAS,EACT,OAAO,EACP,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAC7D,CAAC;QAEF,IAAA,sBAAa,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAEjE,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAED,MAAM,gBAAgB,GAAG,CACvB,IAAU,EACV,OAAuC,EACG,EAAE,CAAC,iCAC1C,OAAO,KACV,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAC9C,WAAW,EAAE,IAAA,iCAAyB,EAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EACpE,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,EAAE,IACR,CAAC;AAEH,kBAAe,wBAAwB,CAAC"}
|
|
@@ -18,14 +18,14 @@ exports.createNodesV2 = [
|
|
|
18
18
|
];
|
|
19
19
|
function createNodesInternal(configFilePath, _options, context) {
|
|
20
20
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
var _a, _b
|
|
21
|
+
var _a, _b;
|
|
22
22
|
const projectRoot = (0, path_1.dirname)(configFilePath);
|
|
23
23
|
// Read project.json content
|
|
24
24
|
let projectJsonContent;
|
|
25
25
|
try {
|
|
26
26
|
projectJsonContent = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(context.workspaceRoot, configFilePath)).toString());
|
|
27
27
|
}
|
|
28
|
-
catch (
|
|
28
|
+
catch (_c) {
|
|
29
29
|
// If project.json can't be read, skip this project
|
|
30
30
|
return {};
|
|
31
31
|
}
|
|
@@ -35,30 +35,14 @@ function createNodesInternal(configFilePath, _options, context) {
|
|
|
35
35
|
// Not a Terraform project (no projectType metadata), skip
|
|
36
36
|
return {};
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
let siblingFiles;
|
|
40
|
-
try {
|
|
41
|
-
siblingFiles = (0, fs_1.readdirSync)((0, path_1.join)(context.workspaceRoot, projectRoot));
|
|
42
|
-
}
|
|
43
|
-
catch (_f) {
|
|
44
|
-
// If directory can't be read, skip this project
|
|
45
|
-
return {};
|
|
46
|
-
}
|
|
47
|
-
const targetConfigurationParams = {
|
|
48
|
-
backendProject: ((_d = (_c = projectJsonContent.metadata) === null || _c === void 0 ? void 0 : _c[constants_1.PLUGIN_NAME]) === null || _d === void 0 ? void 0 : _d.backendProject) || null,
|
|
49
|
-
// check if projectRoot/tfvars/dev.tfvars and projectRoot/tfvars/prod.tfvars exist
|
|
50
|
-
varFiles: {
|
|
51
|
-
dev: siblingFiles.includes('tfvars/dev.tfvars'),
|
|
52
|
-
prod: siblingFiles.includes('tfvars/prod.tfvars'),
|
|
53
|
-
},
|
|
54
|
-
};
|
|
38
|
+
const targetConfigurationParams = normalizeTargetOptions(projectJsonContent);
|
|
55
39
|
let projectTargets = {};
|
|
56
40
|
// Determine targets based on metadata (no fallback scanning needed)
|
|
57
41
|
if (terraformProjectType === 'backend') {
|
|
58
42
|
projectTargets = (0, inferedTasks_1.getBackendProjectTargets)(targetConfigurationParams);
|
|
59
43
|
}
|
|
60
|
-
else if (targetConfigurationParams.backendProject) {
|
|
61
|
-
// If backendProject
|
|
44
|
+
else if (targetConfigurationParams.init.backendProject) {
|
|
45
|
+
// If backendProject option is set, it's a stateful module
|
|
62
46
|
projectTargets = (0, inferedTasks_1.getStatefulProjectTargets)(targetConfigurationParams);
|
|
63
47
|
}
|
|
64
48
|
else if (terraformProjectType === 'stateful') {
|
|
@@ -79,4 +63,19 @@ function createNodesInternal(configFilePath, _options, context) {
|
|
|
79
63
|
};
|
|
80
64
|
});
|
|
81
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Normalizes project.json into params for building Terraform targets.
|
|
68
|
+
* backendProject is read from terraform-init target's metadata; varFile is via target args/configurations.
|
|
69
|
+
*/
|
|
70
|
+
function normalizeTargetOptions(projectJsonContent) {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
const initTarget = (_a = projectJsonContent.targets) === null || _a === void 0 ? void 0 : _a['terraform-init'];
|
|
73
|
+
const metadata = initTarget === null || initTarget === void 0 ? void 0 : initTarget.metadata;
|
|
74
|
+
const backendProject = (_b = metadata === null || metadata === void 0 ? void 0 : metadata.backendProject) !== null && _b !== void 0 ? _b : null;
|
|
75
|
+
return {
|
|
76
|
+
init: {
|
|
77
|
+
backendProject,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
82
81
|
//# sourceMappingURL=createNodes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodes.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/createNodes.ts"],"names":[],"mappings":";;;;AAAA,uCAKoB;AACpB,
|
|
1
|
+
{"version":3,"file":"createNodes.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/createNodes.ts"],"names":[],"mappings":";;;;AAAA,uCAKoB;AACpB,2BAAkC;AAClC,+BAAqC;AACrC,iDAKwB;AAGxB,4CAA2C;AAE3C,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C,mDAAmD;AACtC,QAAA,aAAa,GAA4C;IACpE,mBAAmB;IACnB,CAAO,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,OAAO,MAAM,IAAA,6BAAoB,EAC/B,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC/B,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EACnD,WAAW,EACX,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC,CAAA;CACF,CAAC;AAEF,SAAe,mBAAmB,CAChC,cAAsB,EACtB,QAAkC,EAClC,OAA6B;;;QAE7B,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,cAAc,CAAC,CAAC;QAE5C,4BAA4B;QAC5B,IAAI,kBAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CACrE,CAAC;QACJ,CAAC;QAAC,WAAM,CAAC;YACP,mDAAmD;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,4DAA4D;QAC5D,MAAM,oBAAoB,GACxB,MAAA,MAAA,kBAAkB,CAAC,QAAQ,0CAAG,uBAAW,CAAC,0CAAE,WAAW,CAAC;QAE1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,0DAA0D;YAC1D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,yBAAyB,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;QAE7E,IAAI,cAAc,GAAoC,EAAE,CAAC;QAEzD,oEAAoE;QACpE,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,cAAc,GAAG,IAAA,uCAAwB,EAAC,yBAAyB,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzD,0DAA0D;YAC1D,cAAc,GAAG,IAAA,wCAAyB,EAAC,yBAAyB,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,oBAAoB,KAAK,UAAU,EAAE,CAAC;YAC/C,yEAAyE;YACzE,cAAc,GAAG,IAAA,wCAAyB,EAAC,yBAAyB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,cAAc,GAAG,IAAA,sCAAuB,EAAC,yBAAyB,CAAC,CAAC;QACtE,CAAC;QAED,2EAA2E;QAC3E,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,WAAW,CAAC,EAAE;oBACb,OAAO,EAAE,cAAc;iBACxB;aACF;SACF,CAAC;IACJ,CAAC;CAAA;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,kBAAwC;;IAExC,MAAM,UAAU,GAAG,MAAA,kBAAkB,CAAC,OAAO,0CAAG,gBAAgB,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAmD,CAAC;IACjF,MAAM,cAAc,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,mCAAI,IAAI,CAAC;IAExD,OAAO;QACL,IAAI,EAAE;YACJ,cAAc;SACf;KACF,CAAC;AACJ,CAAC"}
|
package/src/targets/default.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { TargetConfiguration } from '@nx/devkit';
|
|
2
|
-
import {
|
|
3
|
-
export declare const getTerraformInitTarget: (
|
|
4
|
-
export declare const getTerraformPlanTarget: (
|
|
2
|
+
import { TerraformInitTargetOptions } from './type';
|
|
3
|
+
export declare const getTerraformInitTarget: (options: TerraformInitTargetOptions) => TargetConfiguration;
|
|
4
|
+
export declare const getTerraformPlanTarget: () => TargetConfiguration;
|
|
5
5
|
export declare const TERRAFORM_APPLY_TARGET: TargetConfiguration;
|
|
6
|
-
export declare const getTerraformDestroyTarget: (
|
|
6
|
+
export declare const getTerraformDestroyTarget: () => TargetConfiguration;
|
|
7
7
|
export declare const TERRAFORM_FMT_TARGET: TargetConfiguration;
|
|
8
8
|
export declare const TERRAFORM_VALIDATE_TARGET: TargetConfiguration;
|
|
9
9
|
export declare const TERRAFORM_OUTPUT_TARGET: TargetConfiguration;
|
package/src/targets/default.js
CHANGED
|
@@ -2,44 +2,42 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TERRAFORM_OUTPUT_TARGET = exports.TERRAFORM_VALIDATE_TARGET = exports.TERRAFORM_FMT_TARGET = exports.getTerraformDestroyTarget = exports.TERRAFORM_APPLY_TARGET = exports.getTerraformPlanTarget = exports.getTerraformInitTarget = void 0;
|
|
4
4
|
const inputs_1 = require("./inputs");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
args: [
|
|
10
|
-
...additionalArgs,
|
|
11
|
-
varFiles.dev ? '-var-file=./tfvars/dev.tfvars' : '',
|
|
12
|
-
],
|
|
13
|
-
},
|
|
14
|
-
prod: {
|
|
15
|
-
args: [
|
|
16
|
-
...additionalArgs,
|
|
17
|
-
varFiles.prod ? '-var-file=./tfvars/prod.tfvars' : '',
|
|
18
|
-
],
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
const getTerraformInitTarget = (params) => {
|
|
23
|
-
const args = [];
|
|
24
|
-
if (params.backendProject) {
|
|
25
|
-
args.push(`-backend-config=../${params.backendProject}/backend.config`, '-reconfigure');
|
|
5
|
+
const getTerraformInitTarget = (options) => {
|
|
6
|
+
const args = ['-reconfigure'];
|
|
7
|
+
if (options.backendProject) {
|
|
8
|
+
args.push(`-backend-config="../${options.backendProject}/backend.config"`);
|
|
26
9
|
}
|
|
27
|
-
return
|
|
10
|
+
return {
|
|
28
11
|
// cache only for backend projects
|
|
29
|
-
cache: false,
|
|
12
|
+
cache: false,
|
|
13
|
+
executor: 'nx:run-commands',
|
|
14
|
+
dependsOn: ['^terraform-apply'],
|
|
15
|
+
options: {
|
|
30
16
|
cwd: '{projectRoot}',
|
|
31
17
|
command: 'terraform init',
|
|
32
|
-
|
|
18
|
+
args,
|
|
19
|
+
},
|
|
20
|
+
inputs: [
|
|
33
21
|
'{projectRoot}/provider.tf',
|
|
34
22
|
'{projectRoot}/backend.tf',
|
|
35
23
|
...inputs_1.TERRAFORM_ENV_VARIABLES_INPUTS,
|
|
36
|
-
],
|
|
24
|
+
],
|
|
25
|
+
outputs: ['{projectRoot}/.terraform', '{projectRoot}/.terraform.lock.hcl'],
|
|
26
|
+
syncGenerators: ['nx-terraform:sync-terraform-metadata'],
|
|
27
|
+
};
|
|
37
28
|
};
|
|
38
29
|
exports.getTerraformInitTarget = getTerraformInitTarget;
|
|
39
|
-
const getTerraformPlanTarget = (
|
|
30
|
+
const getTerraformPlanTarget = () => ({
|
|
31
|
+
cache: false,
|
|
32
|
+
executor: 'nx:run-commands',
|
|
33
|
+
dependsOn: ['terraform-init'],
|
|
34
|
+
options: {
|
|
40
35
|
cwd: '{projectRoot}',
|
|
41
|
-
command: 'terraform plan',
|
|
42
|
-
},
|
|
36
|
+
command: 'terraform plan -out=tfplan',
|
|
37
|
+
},
|
|
38
|
+
inputs: [...inputs_1.TERRAFORM_ALL_INPUTS],
|
|
39
|
+
outputs: ['{projectRoot}/tfplan'],
|
|
40
|
+
});
|
|
43
41
|
exports.getTerraformPlanTarget = getTerraformPlanTarget;
|
|
44
42
|
exports.TERRAFORM_APPLY_TARGET = {
|
|
45
43
|
cache: false,
|
|
@@ -51,10 +49,16 @@ exports.TERRAFORM_APPLY_TARGET = {
|
|
|
51
49
|
},
|
|
52
50
|
inputs: [...inputs_1.TERRAFORM_ALL_INPUTS, '{projectRoot}/tfplan'],
|
|
53
51
|
};
|
|
54
|
-
const getTerraformDestroyTarget = (
|
|
52
|
+
const getTerraformDestroyTarget = () => ({
|
|
53
|
+
cache: false,
|
|
54
|
+
executor: 'nx:run-commands',
|
|
55
|
+
dependsOn: ['terraform-init'],
|
|
56
|
+
options: {
|
|
55
57
|
cwd: '{projectRoot}',
|
|
56
58
|
command: 'terraform destroy',
|
|
57
|
-
|
|
59
|
+
args: ['-auto-approve'],
|
|
60
|
+
},
|
|
61
|
+
});
|
|
58
62
|
exports.getTerraformDestroyTarget = getTerraformDestroyTarget;
|
|
59
63
|
exports.TERRAFORM_FMT_TARGET = {
|
|
60
64
|
cache: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/default.ts"],"names":[],"mappings":";;;AAEA,qCAIkB;
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/default.ts"],"names":[],"mappings":";;;AAEA,qCAIkB;AAGX,MAAM,sBAAsB,GAAG,CACpC,OAAmC,EACd,EAAE;IACvB,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAE9B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,cAAc,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,kCAAkC;QAClC,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,CAAC,kBAAsD,CAAC;QACnE,OAAO,EAAE;YACP,GAAG,EAAE,eAAe;YACpB,OAAO,EAAE,gBAAgB;YACzB,IAAI;SACL;QACD,MAAM,EAAE;YACN,2BAA2B;YAC3B,0BAA0B;YAC1B,GAAG,uCAA8B;SAClC;QACD,OAAO,EAAE,CAAC,0BAA0B,EAAE,mCAAmC,CAAC;QAC1E,cAAc,EAAE,CAAC,sCAAsC,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC;AAEK,MAAM,sBAAsB,GAAG,GAAwB,EAAE,CAAC,CAAC;IAChE,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,CAAC,gBAAoD,CAAC;IACjE,OAAO,EAAE;QACP,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,4BAA4B;KACtC;IACD,MAAM,EAAE,CAAC,GAAG,6BAAoB,CAAC;IACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;CAClC,CAAC,CAAC;AAVU,QAAA,sBAAsB,0BAUhC;AAEU,QAAA,sBAAsB,GAAwB;IACzD,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,CAAC,gBAAoD,CAAC;IACjE,OAAO,EAAE;QACP,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,sCAAsC;KAChD;IACD,MAAM,EAAE,CAAC,GAAG,6BAAoB,EAAE,sBAAsB,CAAC;CAC1D,CAAC;AAEK,MAAM,yBAAyB,GAAG,GAAwB,EAAE,CAAC,CAAC;IACnE,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,CAAC,gBAAoD,CAAC;IACjE,OAAO,EAAE;QACP,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,CAAC,eAAe,CAAC;KACxB;CACF,CAAC,CAAC;AATU,QAAA,yBAAyB,6BASnC;AAEU,QAAA,oBAAoB,GAAwB;IACvD,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE;QACP,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,2BAA2B;KACrC;IACD,MAAM,EAAE,CAAC,GAAG,+BAAsB,CAAC;CACpC,CAAC;AAEW,QAAA,yBAAyB,GAAwB;IAC5D,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,CAAC,gBAAoD,CAAC;IACjE,OAAO,EAAE;QACP,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,oBAAoB;KAC9B;IACD,MAAM,EAAE,CAAC,GAAG,6BAAoB,CAAC;CAClC,CAAC;AAEW,QAAA,uBAAuB,GAAwB;IAC1D,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,CAAC,gBAAoD,CAAC;IACjE,OAAO,EAAE,CAAC,qCAAqC,CAAC;IAChD,OAAO,EAAE;QACP,OAAO,EACL,yGAAyG;QAC3G,GAAG,EAAE,eAAe;KACrB;CACF,CAAC"}
|
|
@@ -3,20 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getModuleProjectTargets = exports.getStatefulProjectTargets = exports.getBackendProjectTargets = void 0;
|
|
4
4
|
const default_1 = require("./default");
|
|
5
5
|
const getBackendProjectTargets = (params) => ({
|
|
6
|
-
'terraform-init': Object.assign(Object.assign({}, (0, default_1.getTerraformInitTarget)(params)), { cache: true }),
|
|
7
|
-
'terraform-plan': Object.assign(Object.assign({}, (0, default_1.getTerraformPlanTarget)(
|
|
6
|
+
'terraform-init': Object.assign(Object.assign({}, (0, default_1.getTerraformInitTarget)(params.init)), { cache: true }),
|
|
7
|
+
'terraform-plan': Object.assign(Object.assign({}, (0, default_1.getTerraformPlanTarget)()), { cache: true }),
|
|
8
8
|
'terraform-apply': Object.assign(Object.assign({}, default_1.TERRAFORM_APPLY_TARGET), { cache: true }),
|
|
9
|
-
'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(
|
|
9
|
+
'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(),
|
|
10
10
|
'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
|
|
11
11
|
'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
|
|
12
12
|
'terraform-output': default_1.TERRAFORM_OUTPUT_TARGET,
|
|
13
13
|
});
|
|
14
14
|
exports.getBackendProjectTargets = getBackendProjectTargets;
|
|
15
15
|
const getStatefulProjectTargets = (params) => ({
|
|
16
|
-
'terraform-init': (0, default_1.getTerraformInitTarget)(params),
|
|
17
|
-
'terraform-plan': (0, default_1.getTerraformPlanTarget)(
|
|
16
|
+
'terraform-init': (0, default_1.getTerraformInitTarget)(params.init),
|
|
17
|
+
'terraform-plan': (0, default_1.getTerraformPlanTarget)(),
|
|
18
18
|
'terraform-apply': default_1.TERRAFORM_APPLY_TARGET,
|
|
19
|
-
'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(
|
|
19
|
+
'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(),
|
|
20
20
|
'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
|
|
21
21
|
'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
|
|
22
22
|
'terraform-output': default_1.TERRAFORM_OUTPUT_TARGET,
|
|
@@ -25,10 +25,10 @@ exports.getStatefulProjectTargets = getStatefulProjectTargets;
|
|
|
25
25
|
const getModuleProjectTargets = (params) => {
|
|
26
26
|
const getStubTarget = (originalTarget) => (Object.assign(Object.assign({}, originalTarget), { cache: true, options: Object.assign(Object.assign({}, originalTarget.options), { command: 'echo "Operation is not applicable in module projects."' }) }));
|
|
27
27
|
return {
|
|
28
|
-
'terraform-init': getStubTarget((0, default_1.getTerraformInitTarget)(params)),
|
|
29
|
-
'terraform-plan': getStubTarget((0, default_1.getTerraformPlanTarget)(
|
|
28
|
+
'terraform-init': getStubTarget((0, default_1.getTerraformInitTarget)(params.init)),
|
|
29
|
+
'terraform-plan': getStubTarget((0, default_1.getTerraformPlanTarget)()),
|
|
30
30
|
'terraform-apply': getStubTarget(default_1.TERRAFORM_APPLY_TARGET),
|
|
31
|
-
'terraform-destroy': getStubTarget((0, default_1.getTerraformDestroyTarget)(
|
|
31
|
+
'terraform-destroy': getStubTarget((0, default_1.getTerraformDestroyTarget)()),
|
|
32
32
|
'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
|
|
33
33
|
'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
|
|
34
34
|
'terraform-output': getStubTarget(default_1.TERRAFORM_OUTPUT_TARGET),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferedTasks.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/inferedTasks.ts"],"names":[],"mappings":";;;AACA,uCAQmB;AAKZ,MAAM,wBAAwB,GAAG,CACtC,MAAkC,EACT,EAAE,CAAC,CAAC;IAC7B,gBAAgB,kCACX,IAAA,gCAAsB,EAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"inferedTasks.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/inferedTasks.ts"],"names":[],"mappings":";;;AACA,uCAQmB;AAKZ,MAAM,wBAAwB,GAAG,CACtC,MAAkC,EACT,EAAE,CAAC,CAAC;IAC7B,gBAAgB,kCACX,IAAA,gCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC,KACtC,KAAK,EAAE,IAAI,GACZ;IACD,gBAAgB,kCAAO,IAAA,gCAAsB,GAAE,KAAE,KAAK,EAAE,IAAI,GAAE;IAC9D,iBAAiB,kCAAO,gCAAsB,KAAE,KAAK,EAAE,IAAI,GAAE;IAC7D,mBAAmB,EAAE,IAAA,mCAAyB,GAAE;IAChD,eAAe,EAAE,8BAAoB;IACrC,oBAAoB,EAAE,mCAAyB;IAC/C,kBAAkB,EAAE,iCAAuB;CAC5C,CAAC,CAAC;AAbU,QAAA,wBAAwB,4BAalC;AAEI,MAAM,yBAAyB,GAAG,CACvC,MAAkC,EACT,EAAE,CAAC,CAAC;IAC7B,gBAAgB,EAAE,IAAA,gCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC;IACrD,gBAAgB,EAAE,IAAA,gCAAsB,GAAE;IAC1C,iBAAiB,EAAE,gCAAsB;IACzC,mBAAmB,EAAE,IAAA,mCAAyB,GAAE;IAChD,eAAe,EAAE,8BAAoB;IACrC,oBAAoB,EAAE,mCAAyB;IAC/C,kBAAkB,EAAE,iCAAuB;CAC5C,CAAC,CAAC;AAVU,QAAA,yBAAyB,6BAUnC;AAEI,MAAM,uBAAuB,GAAG,CACrC,MAAkC,EACT,EAAE;IAC3B,MAAM,aAAa,GAAG,CAAC,cAAmC,EAAE,EAAE,CAAC,iCAC1D,cAAc,KACjB,KAAK,EAAE,IAAI,EACX,OAAO,kCACF,cAAc,CAAC,OAAO,KACzB,OAAO,EAAE,wDAAwD,OAEnE,CAAC;IAEH,OAAO;QACL,gBAAgB,EAAE,aAAa,CAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,gBAAgB,EAAE,aAAa,CAAC,IAAA,gCAAsB,GAAE,CAAC;QACzD,iBAAiB,EAAE,aAAa,CAAC,gCAAsB,CAAC;QACxD,mBAAmB,EAAE,aAAa,CAAC,IAAA,mCAAyB,GAAE,CAAC;QAC/D,eAAe,EAAE,8BAAoB;QACrC,oBAAoB,EAAE,mCAAyB;QAC/C,kBAAkB,EAAE,aAAa,CAAC,iCAAuB,CAAC;KAC3D,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,uBAAuB,2BAqBlC"}
|
package/src/targets/type.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { TargetConfiguration } from '@nx/devkit';
|
|
2
|
+
/** Metadata for terraform-init target (TargetConfiguration.metadata). */
|
|
3
|
+
export interface TerraformInitTargetMetadata {
|
|
4
|
+
backendProject?: string;
|
|
5
|
+
}
|
|
2
6
|
export type TerraformTarget = 'terraform-plan' | 'terraform-apply' | 'terraform-destroy' | 'terraform-validate' | 'terraform-fmt' | 'terraform-init' | 'terraform-output';
|
|
3
7
|
export type TerraformTargetDependency = `^${TerraformTarget}` | TerraformTarget;
|
|
4
8
|
export type TerraformProjectTargets = Record<TerraformTarget, TargetConfiguration>;
|
|
5
|
-
|
|
9
|
+
/** Options normalized for terraform-init (only backendProject). */
|
|
10
|
+
export type TerraformInitTargetOptions = {
|
|
6
11
|
backendProject: string | null;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
};
|
|
13
|
+
/** Per-target normalized options used to build Terraform targets. varFile is via target args/configurations. */
|
|
14
|
+
export type TargetsConfigurationParams = {
|
|
15
|
+
init: TerraformInitTargetOptions;
|
|
11
16
|
};
|
package/src/types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Expected format of the plugin options defined in nx.json
|
|
2
|
+
* Expected format of the plugin options defined in nx.json.
|
|
3
|
+
* Use target args or Nx configurations (e.g. terraform-plan:production) for var files.
|
|
3
4
|
*/
|
|
4
|
-
export
|
|
5
|
+
export interface NxTerraformPluginOptions {
|
|
6
|
+
}
|
|
5
7
|
export type TerraformBackendType = 'aws-s3' | 'local';
|