firmament-vita
Version:
Firmament module for automating VITA tasks
37 lines (36 loc) • 1.22 kB
text/typescript
import {VitaSpawn} from "../interfaces/vita-spawn";
import {ChildProcess, spawn} from 'child_process';
import {ForceErrorImpl} from "firmament-yargs";
export class VitaSpawnImpl extends ForceErrorImpl implements VitaSpawn {
spawnIt(cmd,
args,
cbStatus: (err: Error, dataChunk: Uint8Array)=>void,
cbFinal: (err: Error, result: any)=>void): ChildProcess {
cbStatus = this.checkCallback(cbStatus);
cbFinal = this.checkCallback(cbFinal);
let stderrText = '';
//console.log(`Spawning: ${cmd} : ${args}`);
let childProcess = spawn(cmd, args);
childProcess.stderr.on('data', (dataChunk: Uint8Array) => {
stderrText += dataChunk.toString();
});
childProcess.stdout.on('data', (dataChunk: Uint8Array) => {
try {
cbStatus(null, dataChunk);
} catch (err) {
let e = err;
}
});
childProcess.on('error', (code: number) => {
let c = code;
});
childProcess.on('close', (code: number, signal: string) => {
if (code) {
cbFinal(new Error(`exitCode: ${code}, signal: ${signal}, stderr: ${stderrText}`), null);
} else {
cbFinal(null, null);
}
});
return childProcess;
}
}