UNPKG

@guidepup/setup

Version:

Setup your environment for screen-reader automation.

72 lines (71 loc) 2.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.installNvda = installNvda; const decompress_1 = __importDefault(require("decompress")); const https_1 = require("https"); const fs_1 = require("fs"); const path_1 = require("path"); const os_1 = require("os"); const errors_1 = require("../errors"); const constants_1 = require("./constants"); const https_proxy_agent_1 = require("https-proxy-agent"); const appName = "guidepup_nvda"; const sourceUrl = `https://codeload.github.com/guidepup/nvda/zip/refs/tags/${constants_1.GUIDEPUP_NVDA_VERSION}`; async function installNvda({ userProvidedInstallDirectory, }) { if (userProvidedInstallDirectory) { (0, fs_1.mkdirSync)(userProvidedInstallDirectory, { recursive: true }); } const destinationBaseDirectory = userProvidedInstallDirectory ?? (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), `${appName}_`)); const destinationZip = (0, path_1.join)(destinationBaseDirectory, `${appName}.zip`); const fileZip = (0, fs_1.createWriteStream)(destinationZip); function removeAll() { try { (0, fs_1.rmSync)(destinationBaseDirectory, { recursive: true }); } catch { // swallow } } function removeZip() { try { (0, fs_1.rmSync)(destinationZip, { recursive: true }); } catch { // swallow } } let agent; const proxyUrl = (process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy); if (proxyUrl) { agent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl); } try { await new Promise((resolve, reject) => { function onSuccess() { fileZip.close((error) => { if (error) { return reject(error); } resolve(); }); } const request = (0, https_1.get)(sourceUrl, { agent }, (response) => response.pipe(fileZip)); request.on("error", reject); fileZip.on("finish", onSuccess); fileZip.on("error", reject); }); await (0, decompress_1.default)(destinationZip, destinationBaseDirectory); removeZip(); } catch (e) { removeAll(); throw new Error(`${errors_1.ERR_WINDOWS_FAILED_TO_INSTALL_NVDA}\n\n${e.message}`); } return (0, path_1.join)(destinationBaseDirectory, `nvda-${constants_1.GUIDEPUP_NVDA_VERSION}`, "nvda"); }