@guidepup/setup
Version:
Setup your environment for screen-reader automation.
72 lines (71 loc) • 2.73 kB
JavaScript
;
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");
}