UNPKG

firmament-vita

Version:

Firmament module for automating VITA tasks

37 lines (36 loc) 1.22 kB
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; } }