@jahed/terraform
Version:
A wrapper which downloads and runs Terraform locally via npm.
26 lines (25 loc) • 1.4 kB
JavaScript
;
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;