You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
733 B
JavaScript
29 lines
733 B
JavaScript
"use strict";
|
|
|
|
const Promise = require("bluebird");
|
|
const childProcess = require("child_process");
|
|
|
|
module.exports = function runProgram(binary, args = [], options = {}) {
|
|
return new Promise((resolve, reject) => {
|
|
let proc = childProcess.spawn(binary, args, Object.assign({
|
|
stdio: [ process.stdin, process.stdout, process.stderr ]
|
|
}, options));
|
|
|
|
proc.on("error", (error) => {
|
|
reject(error);
|
|
});
|
|
|
|
proc.on("exit", (exitCode, signal) => {
|
|
if (exitCode === 0) {
|
|
resolve();
|
|
} else if (exitCode != null) {
|
|
reject(`Non-zero exit code: ${exitCode}`);
|
|
} else if (signal != null) {
|
|
reject(`Process terminated by signal: ${signal}`);
|
|
} else {
|
|
reject("Process exited abnormally");
|
|
}
|
|
});
|
|
});
|
|
};
|