62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
const fs = require("fs");
|
||
|
const resolve = require("path").resolve;
|
||
|
const spawn = require("child_process").spawn;
|
||
|
|
||
|
const local = require("./local");
|
||
|
|
||
|
function run(progname, args, ignoreErrorStream) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const proc = spawn(progname, args);
|
||
|
|
||
|
let stdout = Buffer.from([]);
|
||
|
let stderr = Buffer.from([]);
|
||
|
|
||
|
proc.stdout.on("data", (data) => {
|
||
|
stdout = Buffer.concat([ stdout, data ]);
|
||
|
});
|
||
|
|
||
|
proc.stderr.on("data", (data) => {
|
||
|
stderr = Buffer.concat([ stdout, data ]);
|
||
|
});
|
||
|
|
||
|
proc.on("error", (error) => {
|
||
|
console.log("ERROR");
|
||
|
console.log(stderr.toString());
|
||
|
error.stderr = stderr.toString();
|
||
|
error.stdout = stdout.toString();
|
||
|
reject(error);
|
||
|
});
|
||
|
|
||
|
proc.on("close", (code) => {
|
||
|
if ((stderr.length && !ignoreErrorStream) || code !== 0) {
|
||
|
console.log("ERROR");
|
||
|
console.log(stderr.toString());
|
||
|
|
||
|
let error = new Error("stderr not empty");
|
||
|
error.stderr = stderr.toString();
|
||
|
error.stdout = stdout.toString();
|
||
|
error.statusCode = code;
|
||
|
reject(error);
|
||
|
} else {
|
||
|
resolve(stdout.toString());
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function runBuild() {
|
||
|
return run("npx", [ "tsc", "--build", resolve(__dirname, "../tsconfig.project.json") ]);
|
||
|
}
|
||
|
|
||
|
function runDist() {
|
||
|
return run("npx", [ "lerna", "run", "dist" ], true);
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
run: run,
|
||
|
runDist: runDist,
|
||
|
runBuild: runBuild
|
||
|
};
|