UNPKG

@jahed/terraform

Version:

A wrapper which downloads and runs Terraform locally via npm.

34 lines (33 loc) 1.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.downloadTerraformToMemory = void 0; const promises_1 = require("@jahed/promises"); const crypto_1 = __importDefault(require("crypto")); const download_1 = require("./download"); const getArchitecture_1 = require("./getArchitecture"); const getDownloadUrl_1 = require("./getDownloadUrl"); const getExpectedHash_1 = require("./getExpectedHash"); const getPlatform_1 = require("./getPlatform"); const getVersion_1 = require("./getVersion"); const downloadTerraformToMemory = (0, promises_1.waterfall)((outputs) => { return (0, promises_1.every)({ version: (0, getVersion_1.getVersion)(outputs), platform: (0, getPlatform_1.getPlatform)(), architecture: (0, getArchitecture_1.getArchitecture)(), }); }, (args) => { return (0, promises_1.every)({ buffer: (0, promises_1.waterfall)(() => (0, getDownloadUrl_1.getDownloadUrl)(args), (url) => (0, download_1.download)({ url }))(""), expectedHash: (0, getExpectedHash_1.getExpectedHash)(args), }); }, ({ buffer, expectedHash }) => { const hash = crypto_1.default.createHash("sha256").update(buffer).digest("hex"); if (hash !== expectedHash) { return (0, promises_1.rejected)((0, promises_1.reason)("downloaded archive hash did not match expected hash")); } return buffer; }); exports.downloadTerraformToMemory = downloadTerraformToMemory;