|
1234567891011121314151617181920212223242526272829303132 |
- var spawn = require("child_process").spawn;
-
- module.exports = shell;
- module.exports.safe = safe;
-
- function shell(cmd, ...args) {
- console.log("running shell '"+cmd+" "+args.join(" ")+"'");
- return new Promise((resolve, reject) => {
- var child = spawn(cmd, args);
-
- function print(out, name) {
- return function(d) {
- var s = d.toString();
- if (s.trim() === "")
- return;
- out.write(cmd+": "+name+": "+s);
- }
- }
- child.stderr.on("data", print(process.stderr, "err"));
- child.stdout.on("data", print(process.stdout, "out"));
-
- child.on("error", reject);
- child.on("exit", resolve);
- });
- }
-
- async function safe(...args) {
- var code = await shell.apply(null, args);
- if (code !== 0 && code !== null)
- throw new Error("Command "+args[0]+" failed, exit code "+code);
- return code;
- }
|