nx-terraform 0.2.0 → 0.3.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/generators.json CHANGED
@@ -10,6 +10,11 @@
10
10
  "factory": "./src/generators/terraform-backend/terraform-backend",
11
11
  "schema": "./src/generators/terraform-backend/schema.json",
12
12
  "description": "terraform-backend generator"
13
+ },
14
+ "init": {
15
+ "factory": "./src/generators/init/init",
16
+ "schema": "./src/generators/init/schema.json",
17
+ "description": "init generator"
13
18
  }
14
19
  }
15
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx-terraform",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function initGenerator(tree: Tree): Promise<void>;
3
+ export default initGenerator;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initGenerator = initGenerator;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const PLUGIN_NAME = 'nx-terraform';
7
+ function initGenerator(tree) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ var _a;
10
+ const nxJson = (0, devkit_1.readNxJson)(tree) || {};
11
+ const hasPlugin = (_a = nxJson.plugins) === null || _a === void 0 ? void 0 : _a.some((p) => typeof p === 'string' ? p === PLUGIN_NAME : p.plugin === PLUGIN_NAME);
12
+ if (!hasPlugin) {
13
+ if (!nxJson.plugins) {
14
+ nxJson.plugins = [];
15
+ }
16
+ nxJson.plugins = [
17
+ ...nxJson.plugins,
18
+ {
19
+ plugin: PLUGIN_NAME,
20
+ options: {},
21
+ },
22
+ ];
23
+ }
24
+ (0, devkit_1.updateNxJson)(tree, nxJson);
25
+ yield (0, devkit_1.formatFiles)(tree);
26
+ });
27
+ }
28
+ exports.default = initGenerator;
29
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/init/init.ts"],"names":[],"mappings":";;AAIA,sCAwBC;;AA5BD,uCAAyE;AAEzE,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,SAAsB,aAAa,CAAC,IAAU;;;QAC5C,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CACrE,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,CAAC;YAED,MAAM,CAAC,OAAO,GAAG;gBACf,GAAG,MAAM,CAAC,OAAO;gBACjB;oBACE,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC;QACJ,CAAC;QAED,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export type InitGeneratorSchema = unknown;
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "Init",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {},
7
+ "required": ["name"]
8
+ }
@@ -4,9 +4,12 @@ exports.presetGenerator = presetGenerator;
4
4
  const tslib_1 = require("tslib");
5
5
  const devkit_1 = require("@nx/devkit");
6
6
  const terraform_backend_1 = require("../terraform-backend/terraform-backend");
7
+ const init_1 = require("../init/init");
7
8
  function presetGenerator(tree, options) {
8
9
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
10
  const tasks = [];
11
+ // Add nx-terraform plugin to the workspace
12
+ yield (0, init_1.default)(tree);
10
13
  // Scaffold terraform backend project
11
14
  yield (0, terraform_backend_1.terraformBackendGenerator)(tree, {
12
15
  name: 'terraform-setup',
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/preset/generator.ts"],"names":[],"mappings":";;AAKA,0CAeC;;AApBD,uCAAiE;AAGjE,8EAAmF;AAEnF,SAAsB,eAAe,CACnC,IAAU,EACV,OAA8B;;QAE9B,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,qCAAqC;QACrC,MAAM,IAAA,6CAAyB,EAAC,IAAI,EAAE;YACpC,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAA,yBAAgB,EAAC,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC;CAAA;AAED,kBAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-terraform/src/generators/preset/generator.ts"],"names":[],"mappings":";;AAMA,0CAkBC;;AAxBD,uCAAiE;AAGjE,8EAAmF;AACnF,uCAAyC;AAEzC,SAAsB,eAAe,CACnC,IAAU,EACV,OAA8B;;QAE9B,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,2CAA2C;QAC3C,MAAM,IAAA,cAAa,EAAC,IAAI,CAAC,CAAC;QAE1B,qCAAqC;QACrC,MAAM,IAAA,6CAAyB,EAAC,IAAI,EAAE;YACpC,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAA,yBAAgB,EAAC,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC;CAAA;AAED,kBAAe,eAAe,CAAC"}
@@ -1,5 +1,5 @@
1
1
  terraform {
2
2
  backend "local" {
3
- path = local.state_file_path
3
+ path = "terraform.tfstate"
4
4
  }
5
5
  }
@@ -1,3 +1,3 @@
1
1
  locals {
2
- state_file_path = "${path.module}/terraform.tfstate"
2
+ state_file_path = "${path.cwd}/terraform.tfstate"
3
3
  }
package/src/index.d.ts CHANGED
@@ -0,0 +1 @@
1
+ export * from './inferedTasks';
package/src/index.js CHANGED
@@ -1 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./inferedTasks"), exports);
1
5
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nx-terraform/src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nx-terraform/src/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"}
@@ -0,0 +1,3 @@
1
+ import { CreateNodesV2 } from '@nx/devkit';
2
+ export type NxTerraformPluginOptions = unknown;
3
+ export declare const createNodesV2: CreateNodesV2<NxTerraformPluginOptions>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNodesV2 = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const targets_1 = require("./targets");
9
+ // File glob to find all the configuration files for this plugin
10
+ const terraformConfigGlob = '**/main.tf';
11
+ // Entry function that Nx calls to modify the graph
12
+ exports.createNodesV2 = [
13
+ terraformConfigGlob,
14
+ (configFiles, options, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
+ return yield (0, devkit_1.createNodesFromFiles)((configFile, options, context) => createNodesInternal(configFile, options, context), configFiles, options, context);
16
+ }),
17
+ ];
18
+ function createNodesInternal(configFilePath, options, context) {
19
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
+ var _a;
21
+ const projectRoot = (0, path_1.dirname)(configFilePath);
22
+ // Do not create a project if package.json or project.json isn't there.
23
+ const siblingFiles = (0, fs_1.readdirSync)((0, path_1.join)(context.workspaceRoot, projectRoot));
24
+ if (!siblingFiles.includes('project.json')) {
25
+ return {};
26
+ }
27
+ const projectJsonContent = JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(context.workspaceRoot, projectRoot, 'project.json')).toString());
28
+ const targetConfigurationParams = {
29
+ backendProject: ((_a = projectJsonContent.metadata) === null || _a === void 0 ? void 0 : _a.backendProject) || null,
30
+ // check if projectRoot/varfiles/dev.tfvars and projectRoot/varfiles/prod.tfvars exist
31
+ varFiles: {
32
+ dev: siblingFiles.includes('tfvars/dev.tfvars'),
33
+ prod: siblingFiles.includes('tfvars/prod.tfvars'),
34
+ },
35
+ };
36
+ let projectTargets = {};
37
+ if (projectJsonContent.projectType === 'application') {
38
+ if (targetConfigurationParams.backendProject) {
39
+ projectTargets = (0, targets_1.getStatefulProjectTargets)(targetConfigurationParams);
40
+ }
41
+ else {
42
+ projectTargets = (0, targets_1.getBackendProjectTargets)(targetConfigurationParams);
43
+ }
44
+ }
45
+ else {
46
+ projectTargets = (0, targets_1.getModuleProjectTargets)(targetConfigurationParams);
47
+ }
48
+ // Project configuration to be merged into the rest of the Nx configuration
49
+ return {
50
+ projects: {
51
+ [projectRoot]: {
52
+ targets: projectTargets,
53
+ },
54
+ },
55
+ };
56
+ });
57
+ }
58
+ //# sourceMappingURL=inferedTasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferedTasks.js","sourceRoot":"","sources":["../../../../packages/nx-terraform/src/inferedTasks.ts"],"names":[],"mappings":";;;;AAAA,uCAKoB;AACpB,2BAA+C;AAC/C,+BAA8C;AAC9C,uCAImB;AAMnB,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC,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,OAAiC,EACjC,OAA6B;;;QAE7B,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,cAAc,CAAC,CAAC;QAE5C,uEAAuE;QACvE,MAAM,YAAY,GAAG,IAAA,gBAAW,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,kBAAkB,GAAyB,IAAI,CAAC,KAAK,CACzD,IAAA,iBAAY,EACV,IAAA,cAAO,EAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC,CAC5D,CAAC,QAAQ,EAAE,CACb,CAAC;QAEF,MAAM,yBAAyB,GAA+B;YAC5D,cAAc,EAAE,CAAA,MAAA,kBAAkB,CAAC,QAAQ,0CAAE,cAAc,KAAI,IAAI;YACnE,sFAAsF;YACtF,QAAQ,EAAE;gBACR,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBAC/C,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC;aAClD;SACF,CAAC;QAEF,IAAI,cAAc,GAAoC,EAAE,CAAC;QAEzD,IAAI,kBAAkB,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACrD,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC;gBAC7C,cAAc,GAAG,IAAA,mCAAyB,EAAC,yBAAyB,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,IAAA,kCAAwB,EAAC,yBAAyB,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,IAAA,iCAAuB,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"}
@@ -0,0 +1,9 @@
1
+ import { TargetConfiguration } from '@nx/devkit';
2
+ import { TargetsConfigurationParams } from './type';
3
+ export declare const getTerraformInitTarget: (params: TargetsConfigurationParams) => TargetConfiguration;
4
+ export declare const getTerraformPlanTarget: (params: TargetsConfigurationParams) => TargetConfiguration;
5
+ export declare const TERRAFORM_APPLY_TARGET: TargetConfiguration;
6
+ export declare const getTerraformDestroyTarget: (params: TargetsConfigurationParams) => TargetConfiguration;
7
+ export declare const TERRAFORM_FMT_TARGET: TargetConfiguration;
8
+ export declare const TERRAFORM_VALIDATE_TARGET: TargetConfiguration;
9
+ export declare const TERRAFORM_OUTPUT_TARGET: TargetConfiguration;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
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
+ const inputs_1 = require("./inputs");
5
+ const getConfigurations = (varFiles, additionalArgs) => ({
6
+ defaultConfiguration: 'dev',
7
+ configurations: {
8
+ dev: {
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');
26
+ }
27
+ return Object.assign({
28
+ // cache only for backend projects
29
+ cache: false, executor: 'nx:run-commands', dependsOn: ['^terraform-apply'], options: {
30
+ cwd: '{projectRoot}',
31
+ command: 'terraform init',
32
+ }, inputs: [
33
+ '{projectRoot}/provider.tf',
34
+ '{projectRoot}/backend.tf',
35
+ ...inputs_1.TERRAFORM_ENV_VARIABLES_INPUTS,
36
+ ], outputs: ['{projectRoot}/.terraform', '{projectRoot}/.terraform.lock.hcl'] }, getConfigurations({ dev: false, prod: false }, args));
37
+ };
38
+ exports.getTerraformInitTarget = getTerraformInitTarget;
39
+ const getTerraformPlanTarget = (params) => (Object.assign({ cache: false, executor: 'nx:run-commands', dependsOn: ['terraform-init'], options: {
40
+ cwd: '{projectRoot}',
41
+ command: 'terraform plan',
42
+ }, inputs: [...inputs_1.TERRAFORM_ALL_INPUTS], outputs: ['{projectRoot}/tfplan'] }, getConfigurations(params.varFiles, ['-out=tfplan'])));
43
+ exports.getTerraformPlanTarget = getTerraformPlanTarget;
44
+ exports.TERRAFORM_APPLY_TARGET = {
45
+ cache: false,
46
+ executor: 'nx:run-commands',
47
+ dependsOn: ['terraform-plan'],
48
+ options: {
49
+ cwd: '{projectRoot}',
50
+ command: 'terraform apply -auto-approve tfplan',
51
+ },
52
+ inputs: [...inputs_1.TERRAFORM_ALL_INPUTS, '{projectRoot}/tfplan'],
53
+ };
54
+ const getTerraformDestroyTarget = (params) => (Object.assign({ cache: false, executor: 'nx:run-commands', dependsOn: ['terraform-init'], options: {
55
+ cwd: '{projectRoot}',
56
+ command: 'terraform destroy',
57
+ } }, getConfigurations(params.varFiles, ['-auto-approve'])));
58
+ exports.getTerraformDestroyTarget = getTerraformDestroyTarget;
59
+ exports.TERRAFORM_FMT_TARGET = {
60
+ cache: true,
61
+ executor: 'nx:run-commands',
62
+ options: {
63
+ cwd: '{projectRoot}',
64
+ command: 'terraform fmt -write=true',
65
+ },
66
+ inputs: [...inputs_1.TERRAFORM_FILES_INPUTS],
67
+ };
68
+ exports.TERRAFORM_VALIDATE_TARGET = {
69
+ cache: true,
70
+ executor: 'nx:run-commands',
71
+ dependsOn: ['terraform-init'],
72
+ options: {
73
+ cwd: '{projectRoot}',
74
+ command: 'terraform validate',
75
+ },
76
+ inputs: [...inputs_1.TERRAFORM_ALL_INPUTS],
77
+ };
78
+ exports.TERRAFORM_OUTPUT_TARGET = {
79
+ executor: 'nx:run-commands',
80
+ dependsOn: ['terraform-init'],
81
+ outputs: ['{projectRoot}/terraform-outputs.env'],
82
+ options: {
83
+ command: 'terraform output -json | jq -r "to_entries[] | \\"\\(.key)=\\(.value.value)\\"" > terraform-outputs.env',
84
+ cwd: '{projectRoot}',
85
+ },
86
+ };
87
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/default.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TargetsConfigurationParams, TerraformProjectTargets } from './type';
2
+ export { type TargetsConfigurationParams } from './type';
3
+ export declare const getBackendProjectTargets: (params: TargetsConfigurationParams) => TerraformProjectTargets;
4
+ export declare const getStatefulProjectTargets: (params: TargetsConfigurationParams) => TerraformProjectTargets;
5
+ export declare const getModuleProjectTargets: (params: TargetsConfigurationParams) => TerraformProjectTargets;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModuleProjectTargets = exports.getStatefulProjectTargets = exports.getBackendProjectTargets = void 0;
4
+ const default_1 = require("./default");
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)(params)), { cache: true }),
8
+ 'terraform-apply': Object.assign(Object.assign({}, default_1.TERRAFORM_APPLY_TARGET), { cache: true }),
9
+ 'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(params),
10
+ 'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
11
+ 'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
12
+ 'terraform-output': default_1.TERRAFORM_OUTPUT_TARGET,
13
+ });
14
+ exports.getBackendProjectTargets = getBackendProjectTargets;
15
+ const getStatefulProjectTargets = (params) => ({
16
+ 'terraform-init': (0, default_1.getTerraformInitTarget)(params),
17
+ 'terraform-plan': (0, default_1.getTerraformPlanTarget)(params),
18
+ 'terraform-apply': default_1.TERRAFORM_APPLY_TARGET,
19
+ 'terraform-destroy': (0, default_1.getTerraformDestroyTarget)(params),
20
+ 'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
21
+ 'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
22
+ 'terraform-output': default_1.TERRAFORM_OUTPUT_TARGET,
23
+ });
24
+ exports.getStatefulProjectTargets = getStatefulProjectTargets;
25
+ const getModuleProjectTargets = (params) => {
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
+ return {
28
+ 'terraform-init': getStubTarget((0, default_1.getTerraformInitTarget)(params)),
29
+ 'terraform-plan': getStubTarget((0, default_1.getTerraformPlanTarget)(params)),
30
+ 'terraform-apply': default_1.TERRAFORM_APPLY_TARGET,
31
+ 'terraform-destroy': getStubTarget((0, default_1.getTerraformDestroyTarget)(params)),
32
+ 'terraform-fmt': default_1.TERRAFORM_FMT_TARGET,
33
+ 'terraform-validate': default_1.TERRAFORM_VALIDATE_TARGET,
34
+ 'terraform-output': getStubTarget(default_1.TERRAFORM_OUTPUT_TARGET),
35
+ };
36
+ };
37
+ exports.getModuleProjectTargets = getModuleProjectTargets;
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/index.ts"],"names":[],"mappings":";;;AACA,uCAQmB;AAKZ,MAAM,wBAAwB,GAAG,CACtC,MAAkC,EACT,EAAE,CAAC,CAAC;IAC7B,gBAAgB,kCACX,IAAA,gCAAsB,EAAC,MAAM,CAAC,KACjC,KAAK,EAAE,IAAI,GACZ;IACD,gBAAgB,kCAAO,IAAA,gCAAsB,EAAC,MAAM,CAAC,KAAE,KAAK,EAAE,IAAI,GAAE;IACpE,iBAAiB,kCAAO,gCAAsB,KAAE,KAAK,EAAE,IAAI,GAAE;IAC7D,mBAAmB,EAAE,IAAA,mCAAyB,EAAC,MAAM,CAAC;IACtD,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;IAChD,gBAAgB,EAAE,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAChD,iBAAiB,EAAE,gCAAsB;IACzC,mBAAmB,EAAE,IAAA,mCAAyB,EAAC,MAAM,CAAC;IACtD,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,CAAC;QAC/D,gBAAgB,EAAE,aAAa,CAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC,CAAC;QAC/D,iBAAiB,EAAE,gCAAsB;QACzC,mBAAmB,EAAE,aAAa,CAAC,IAAA,mCAAyB,EAAC,MAAM,CAAC,CAAC;QACrE,eAAe,EAAE,8BAAoB;QACrC,oBAAoB,EAAE,mCAAyB;QAC/C,kBAAkB,EAAE,aAAa,CAAC,iCAAuB,CAAC;KAC3D,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,uBAAuB,2BAqBlC"}
@@ -0,0 +1,7 @@
1
+ export declare const TERRAFORM_FILES_INPUTS: string[];
2
+ export declare const TERRAFORM_ENV_VARIABLES_INPUTS: {
3
+ env: string;
4
+ }[];
5
+ export declare const TERRAFORM_ALL_INPUTS: (string | {
6
+ env: string;
7
+ })[];
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TERRAFORM_ALL_INPUTS = exports.TERRAFORM_ENV_VARIABLES_INPUTS = exports.TERRAFORM_FILES_INPUTS = void 0;
4
+ exports.TERRAFORM_FILES_INPUTS = [
5
+ '{projectRoot}/*.tf',
6
+ '{projectRoot}/**/*.tf',
7
+ '{projectRoot}/templates/*',
8
+ '{projectRoot}/tfvars/*',
9
+ ];
10
+ exports.TERRAFORM_ENV_VARIABLES_INPUTS = [
11
+ {
12
+ env: 'TF_VAR_region',
13
+ },
14
+ {
15
+ env: 'TF_VAR_account_id',
16
+ },
17
+ {
18
+ env: 'TF_WORKSPACE',
19
+ },
20
+ ];
21
+ exports.TERRAFORM_ALL_INPUTS = [
22
+ ...exports.TERRAFORM_FILES_INPUTS,
23
+ ...exports.TERRAFORM_ENV_VARIABLES_INPUTS,
24
+ ];
25
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/inputs.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IACpC,oBAAoB;IACpB,uBAAuB;IACvB,2BAA2B;IAC3B,wBAAwB;CACzB,CAAC;AAEW,QAAA,8BAA8B,GAAG;IAC5C;QACE,GAAG,EAAE,eAAe;KACrB;IACD;QACE,GAAG,EAAE,mBAAmB;KACzB;IACD;QACE,GAAG,EAAE,cAAc;KACpB;CACF,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,GAAG,8BAAsB;IACzB,GAAG,sCAA8B;CAClC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { TargetConfiguration } from '@nx/devkit';
2
+ export type TerraformTarget = 'terraform-plan' | 'terraform-apply' | 'terraform-destroy' | 'terraform-validate' | 'terraform-fmt' | 'terraform-init' | 'terraform-output';
3
+ export type TerraformTargetDependency = `^${TerraformTarget}` | TerraformTarget;
4
+ export type TerraformProjectTargets = Record<TerraformTarget, TargetConfiguration>;
5
+ export type TargetsConfigurationParams = {
6
+ backendProject: string | null;
7
+ varFiles: {
8
+ dev: boolean;
9
+ prod: boolean;
10
+ };
11
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../../packages/nx-terraform/src/targets/type.ts"],"names":[],"mappings":""}