terraform-generator
Version:
Generate Terraform configurations with Node.js.
77 lines (76 loc) • 2.87 kB
JavaScript
;
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Argument_argument;
Object.defineProperty(exports, "__esModule", { value: true });
exports.arg = exports.Argument = void 0;
const utils_1 = require("../utils");
/**
* @category Argument
*/
class Argument extends utils_1.TerraformElement {
/**
* Construct argument.
*
* @param arg argument as string
*/
constructor(arg) {
super();
_Argument_argument.set(this, void 0);
__classPrivateFieldSet(this, _Argument_argument, arg, "f");
}
/**
* Get argument's attribute.
*
* @param name attribute name
*/
attr(name) {
return new Argument(`${__classPrivateFieldGet(this, _Argument_argument, "f")}.${name.trim()}`);
}
/**
* Get list argument's element.
*
* @param idx element index
*/
element(idx) {
return new Argument(`${__classPrivateFieldGet(this, _Argument_argument, "f")}[${idx}]`);
}
/**
* To Terraform representation.
*
* Use this method when argument is used as an interpolation in another Terraform argument or code.
*/
toTerraform() {
return utils_1.Util.escape(__classPrivateFieldGet(this, _Argument_argument, "f"));
}
/**
* To string.
*
* Use this method when argument is used as an interpolation in a Terraform string or heredoc.
*
* It is automatically called when argument is used in template literal.
*/
toString() {
return `\${${this.toTerraform()}}`;
}
}
exports.Argument = Argument;
_Argument_argument = new WeakMap();
/**
* Convenient function to construct new [[Argument]].
*
* @param arg argument as string or copy from another argument object
*
* @category Argument
*/
const arg = (arg) => new Argument(arg);
exports.arg = arg;