UNPKG

pur

Version:

Alias and glob powered multi-threaded shell execution

54 lines (45 loc) 1.3 kB
"use strict"; exports.run = run; exports.spawn = spawn; var _child_process = require('child_process'); var child_process = _child_process; /** * Run a shell command * @param {string} cmd * @return {Promise<stdout, stderr>} Promise with standard output and error results */ function run(cmd) { return new Promise(function (res, rej) { child_process.exec(cmd, function (error, stdout, stderr) { if (error !== null) { rej(error); } else { res(stdout, stderr); } }); }); } /** * Spawn a subprocess * @param {string} cmd * @param {function(string)} stdoutCb * @param {function(string)} stdinCb * @param {function(string)} stderrCb * @param {string} cwd * @return {Process} */ function spawn(cmd, args, stdoutCb, stdinCb, stderrCb, cwd) { var originalCwd = process.cwd(); process.chdir(cwd); var childProcess = child_process.spawn(cmd, args, {}); childProcess.stdout.on('data', function (data) { return stdoutCb(String(data)); }); childProcess.stdin.on('data', function (data) { return stdinCb(String(data)); }); childProcess.stderr.on('data', function (data) { return stderrCb(String(data)); }); process.chdir(originalCwd); }