"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.spawn = exports.exec = void 0; var child_process_1 = require("child_process"); var child_process_2 = require("child_process"); var MAX_BUFFER = 10 * Math.pow(2, 20); function exec(command, stdout, stderr) { return new Promise(function (resolve, reject) { var stdoutbuf = ""; var stderrbuf = ""; // EXEC CHILD PROCESS var p = child_process_1.exec(command, { maxBuffer: MAX_BUFFER }, function (err, out) { if (err) return reject(err); if (stdoutbuf.length > 0 && typeof stdout === 'function') stdout(stdoutbuf); if (stderrbuf.length > 0 && typeof stderr === 'function') stderr(stderrbuf); resolve(out); }); // PIPE STDOUT if (typeof stdout === 'function') { p.stdout.on("data", function (chunk) { stdoutbuf += chunk; var i = -1; while ((i = stdoutbuf.indexOf('\n')) >= 0) { var line = stdoutbuf.substring(0, i); stdoutbuf = stdoutbuf.substring(i + 1); if (typeof stdout === 'function') { stdout(line); } } }); } else if (typeof stdout !== 'undefined') { p.stdout.pipe(stdout); } // PIPE STDERR if (typeof stderr === 'function') { p.stderr.on("data", function (chunk) { stderrbuf += chunk; var i = -1; while ((i = stderrbuf.indexOf('\n')) >= 0) { var line = stderrbuf.substring(0, i); stderrbuf = stderrbuf.substring(i + 1); if (typeof stderr === 'function') { stderr(line); } } }); } else if (typeof stderr !== 'undefined') { p.stderr.pipe(stderr); } }); } exports.exec = exec; function spawn(command, args, stdout, stderr) { return new Promise(function (resolve, reject) { try { var p = child_process_2.spawn(command, args); p.stdout.pipe(stdout); p.stderr.pipe(stderr); p.on('close', function (code, sig) { if (!code) resolve(); else reject(); }); p.on('error', reject); p.on('exit', function (code, sig) { if (!code) resolve(); else reject(); }); } catch (err) { console.error(err); } }); } exports.spawn = spawn; //# sourceMappingURL=index.js.map