38 lines
1.0 KiB
TypeScript
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,
|
||
|
}));
|
||
|
});
|
||
|
}
|