core/src/util/run.ts

38 lines
1.0 KiB
TypeScript

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<IProcessData> {
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<IProcessData> {
return new Promise((resolve, reject): void => {
const cprog = exec(execp, (error: any, stdout: any, stderr: any): void => resolve({
code: error.code, stderr, stdout,
}));
});
}