@jahed/terraform
Version:
A wrapper which downloads and runs Terraform locally via npm.
31 lines (30 loc) • 1.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractArchive = extractArchive;
const fflate_1 = __importDefault(require("fflate"));
const promises_1 = __importDefault(require("node:fs/promises"));
const node_path_1 = __importDefault(require("node:path"));
const debug_1 = require("./debug");
async function extractArchive({ outputs, buffer, outdir, }) {
(0, debug_1.debug)("extracting", { outdir });
const { [outputs.originalFilename]: fileContent } = await new Promise((resolve, reject) => {
fflate_1.default.unzip(buffer, {
filter: (file) => file.name === outputs.originalFilename,
}, (error, unzipped) => {
if (error) {
reject(error);
return;
}
resolve(unzipped);
});
});
if (!fileContent) {
throw new Error(`expected zip to contain a terraform executable. (${outputs.originalFilename})`);
}
const filePath = node_path_1.default.resolve(outdir, outputs.versionedFilename);
await promises_1.default.writeFile(filePath, fileContent);
return filePath;
}