UNPKG

@jahed/terraform

Version:

A wrapper which downloads and runs Terraform locally via npm.

26 lines (25 loc) 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.install = void 0; const promises_1 = require("@jahed/promises"); const debug_1 = require("./debug"); const downloadTerraformToFile_1 = require("./downloadTerraformToFile"); const fileExists_1 = require("./fileExists"); const makeExecutable_1 = require("./makeExecutable"); const setupOutputDirectory_1 = require("./setupOutputDirectory"); const exit = () => (0, promises_1.branch)((filePath) => { (0, debug_1.debug)("installed terraform", { path: filePath }); }, (error) => { (0, debug_1.debug)("failed to install terraform.", error); process.exit(1); }); const downloadTerraformToDirectory = () => (0, promises_1.waterfall)((outputs) => (0, promises_1.every)({ outputs, outdir: (0, setupOutputDirectory_1.setupOutputDirectory)(outputs), }), (args) => (0, downloadTerraformToFile_1.downloadTerraformToFile)(args), (0, promises_1.relay)((filePath) => (0, makeExecutable_1.makeExecutable)(filePath))); const doInstall = () => (0, promises_1.compose)(downloadTerraformToDirectory(), exit()); const checkPrerequisites = () => { return (0, promises_1.relay)((outputs) => (0, promises_1.not)((0, fileExists_1.fileExists)(outputs.path))); }; const install = (0, promises_1.compose)(checkPrerequisites(), (0, promises_1.branch)(doInstall(), (0, promises_1.doNothing)())); exports.install = install;