2020-11-21 15:41:08 +00:00
|
|
|
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> {
|
2021-02-13 12:24:50 +00:00
|
|
|
return new Promise((resolve): void => {
|
2020-11-21 15:41:08 +00:00
|
|
|
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> {
|
2021-02-13 12:24:50 +00:00
|
|
|
return new Promise((resolve): void => {
|
|
|
|
exec(execp, (error: any, stdout: any, stderr: any): void => resolve({
|
2020-11-21 15:41:08 +00:00
|
|
|
code: error.code, stderr, stdout,
|
|
|
|
}));
|
|
|
|
});
|
|
|
|
}
|