terraform-generator
Advanced tools
Comparing version 4.5.0 to 4.6.0
@@ -10,2 +10,14 @@ export default class Argument { | ||
/** | ||
* Get argument's attribute. | ||
* | ||
* @param name attribute name | ||
*/ | ||
attr(name: string): Argument; | ||
/** | ||
* Get list argument's element. | ||
* | ||
* @param idx element index | ||
*/ | ||
element(idx: number): Argument; | ||
/** | ||
* To Terraform representation. | ||
@@ -12,0 +24,0 @@ * Use this function when argument is used as an interpolation in another Terraform argument or code. |
@@ -21,2 +21,25 @@ "use strict"; | ||
/** | ||
* Get argument's attribute. | ||
* | ||
* @param name attribute name | ||
*/ | ||
attr(name) { | ||
name = name.trim(); | ||
if (this.argument instanceof Argument) { | ||
return this.argument.attr(name); | ||
} | ||
return new Argument(`${this.argument}.${name}`); | ||
} | ||
/** | ||
* Get list argument's element. | ||
* | ||
* @param idx element index | ||
*/ | ||
element(idx) { | ||
if (this.argument instanceof Argument) { | ||
return this.argument.element(idx); | ||
} | ||
return new Argument(`${this.argument}[${idx}]`); | ||
} | ||
/** | ||
* To Terraform representation. | ||
@@ -23,0 +46,0 @@ * Use this function when argument is used as an interpolation in another Terraform argument or code. |
@@ -19,5 +19,2 @@ import { default as TerraformGenerator } from './TerraformGenerator'; | ||
export { default as Map, map } from './types/Map'; | ||
export { default as Object, map as object } from './types/Map'; | ||
export { default as List, list } from './types/List'; | ||
export { default as Set, list as set } from './types/List'; | ||
export { default as Tuple, list as tuple } from './types/List'; |
@@ -43,13 +43,4 @@ "use strict"; | ||
Object.defineProperty(exports, "map", { enumerable: true, get: function () { return Map_1.map; } }); | ||
var Map_2 = require("./types/Map"); | ||
Object.defineProperty(exports, "Object", { enumerable: true, get: function () { return Map_2.default; } }); | ||
Object.defineProperty(exports, "object", { enumerable: true, get: function () { return Map_2.map; } }); | ||
var List_1 = require("./types/List"); | ||
Object.defineProperty(exports, "List", { enumerable: true, get: function () { return List_1.default; } }); | ||
Object.defineProperty(exports, "list", { enumerable: true, get: function () { return List_1.list; } }); | ||
var List_2 = require("./types/List"); | ||
Object.defineProperty(exports, "Set", { enumerable: true, get: function () { return List_2.default; } }); | ||
Object.defineProperty(exports, "set", { enumerable: true, get: function () { return List_2.list; } }); | ||
var List_3 = require("./types/List"); | ||
Object.defineProperty(exports, "Tuple", { enumerable: true, get: function () { return List_3.default; } }); | ||
Object.defineProperty(exports, "tuple", { enumerable: true, get: function () { return List_3.list; } }); |
@@ -6,8 +6,8 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const shelljs_1 = __importDefault(require("shelljs")); | ||
const child_process_1 = __importDefault(require("child_process")); | ||
const fs_1 = __importDefault(require("fs")); | ||
const path_1 = __importDefault(require("path")); | ||
const shelljs_1 = __importDefault(require("shelljs")); | ||
const TerraformGeneratorUtils_1 = __importDefault(require("./TerraformGeneratorUtils")); | ||
const _1 = require("."); | ||
const TerraformGeneratorUtils_1 = __importDefault(require("./TerraformGeneratorUtils")); | ||
class TerraformGenerator { | ||
@@ -14,0 +14,0 @@ /** |
{ | ||
"name": "terraform-generator", | ||
"version": "4.5.0", | ||
"version": "4.6.0", | ||
"author": "Chang Zhe Jiet", | ||
@@ -43,11 +43,11 @@ "description": "Generate Terraform configurations with Node.js.", | ||
"devDependencies": { | ||
"@types/jest": "^26.0.10", | ||
"@types/jest": "^26.0.14", | ||
"@types/shelljs": "^0.8.8", | ||
"@typescript-eslint/eslint-plugin": "^3.9.1", | ||
"@typescript-eslint/parser": "^3.9.1", | ||
"@typescript-eslint/eslint-plugin": "^3.10.1", | ||
"@typescript-eslint/parser": "^3.10.1", | ||
"del-cli": "^3.0.1", | ||
"eslint": "^7.7.0", | ||
"eslint": "^7.9.0", | ||
"eslint-plugin-import": "^2.22.0", | ||
"jest": "^26.4.1", | ||
"ts-jest": "^26.2.0", | ||
"jest": "^26.4.2", | ||
"ts-jest": "^26.4.0", | ||
"ts-node": "^8.10.2", | ||
@@ -54,0 +54,0 @@ "typescript": "^3.9.7" |
@@ -1,2 +0,2 @@ | ||
# **terraform-generator** | ||
# **terraform-generator** | ||
@@ -22,3 +22,3 @@ [](https://www.npmjs.com/package/terraform-generator) | ||
You don't need to use Terraform variables, you can use your own Javascript/JSON variables or use dot env. | ||
You don't need to use Terraform variables, you can use your own Javascript/JSON variables or use dot env. | ||
@@ -43,2 +43,7 @@ You don't need to use Terraform modules for reusable resource creations, you can make use of Javascript functions. | ||
``` | ||
or | ||
```javascript | ||
const TFG = require('terraform-generator'); | ||
const { default: TerraformGenerator, map } = TFG; | ||
``` | ||
@@ -88,7 +93,2 @@ ### **Initialize TerraformGenerator** | ||
}, | ||
objectForVariable: object({ | ||
arg1: 'str', | ||
arg2: 123, | ||
arg3: true | ||
}), // it's actually same as map, they are interchangeable | ||
objectList: [ | ||
@@ -109,3 +109,3 @@ { | ||
} | ||
), // set & tuple works the same, they are interchangeable | ||
), | ||
map: map({ | ||
@@ -128,2 +128,3 @@ arg1: 'str', | ||
function2: fn('sort', 'a', block.attr('attrName'), 'c'), | ||
functionElement: fn('tolist', ['a', 'b', 'c']).element(0), | ||
custom: arg('max(5, 12, 9)'), | ||
@@ -136,7 +137,9 @@ interpolation: `str-${block.attr('attrName')}` | ||
```javascript | ||
block.attr('id') // block id, string | ||
block.id // convenience getter function, same as attr('id') | ||
block.attr('subnets') // subnet objects, object list | ||
block.attr('subnets.*.id') // subnet ids, string list | ||
block.attr('subnets.*.id[0]') // first subnet id, string | ||
block.attr('id') // block id, string | ||
block.id // convenience getter function, same as attr('id') | ||
block.attr('subnets') // subnet objects, object list | ||
block.attr('subnets.*.id') // subnet ids, string list | ||
block.attr('subnets').attr('*').attr('id') // same as above | ||
block.attr('subnets.*.id[0]') // first subnet id, string | ||
block.attr('subnets').attr('*').attr('id').element(0) // same as above | ||
``` | ||
@@ -166,5 +169,5 @@ | ||
// Write Terraform configuration to a file | ||
tfg.write({ | ||
tfg.write({ | ||
dir: 'outputDir', | ||
format: true | ||
format: true | ||
}); | ||
@@ -272,2 +275,2 @@ ``` | ||
tfg.write({ dir: outputDir, format: true }); | ||
``` | ||
``` |
58605
1593
269