@guidepup/setup
Version:
Setup your environment for screen-reader automation.
41 lines (40 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runVbsScript = runVbsScript;
const path_1 = require("path");
const promises_1 = require("fs/promises");
const child_process_1 = require("child_process");
const os_1 = require("os");
const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;
const CSCRIPT = "cscript";
const withTempFile = async (fn) => await withTempDir((dir) => fn((0, path_1.join)(dir, "script.vbs")));
const withTempDir = async (fn) => {
const dir = await (0, promises_1.mkdtemp)((await (0, promises_1.realpath)((0, os_1.tmpdir)())) + path_1.sep);
try {
return await fn(dir);
}
finally {
await (0, promises_1.rm)(dir, { recursive: true });
}
};
async function runVbsScript(script) {
return await withTempFile(async (filePath) => {
await (0, promises_1.writeFile)(filePath, script);
return new Promise((resolve, reject) => {
const child = (0, child_process_1.execFile)(CSCRIPT, [filePath], {
maxBuffer: DEFAULT_MAX_BUFFER,
}, (e, stdout) => {
if (e) {
return reject(e);
}
if (!stdout) {
return resolve();
}
else {
return resolve(stdout.trim());
}
});
child.stdin.end();
});
});
}