import { exec, spawn } from 'child_process'; import { IEnvironment } from '../types/environment'; export interface IProcessData { code: number; stderr: string[]; stdout: string[]; } export async function spawnProcess(execp: string, args: any[], env: IEnvironment): Promise { return new Promise((resolve, reject): void => { const process = spawn(execp, args, { cwd: env.path }); const stdout: string[] = []; const stderr: string[] = []; process.stdout.on('data', (d: any) => { stdout.push(d.toString()); }); process.stderr.on('data', (d: any) => { stderr.push(d.toString()); }); process.on('exit', (code: number) => { resolve({ code, stderr, stdout, }); }); }); } export async function execProcess(execp: string, env: IEnvironment): Promise { return new Promise((resolve, reject): void => { const cprog = exec(execp, (error: any, stdout: any, stderr: any): void => resolve({ code: error.code, stderr, stdout, })); }); }