in src/utils/cpUtils.ts [33:77]
export async function tryExecuteCommand(outputChannel: IAzExtOutputChannel | undefined, workingDirectory: string | undefined, command: string, ...args: string[]): Promise<ICommandResult> {
return await new Promise((resolve: (res: ICommandResult) => void, reject: (e: Error) => void): void => {
let cmdOutput: string = '';
let cmdOutputIncludingStderr: string = '';
const formattedArgs: string = args.join(' ');
workingDirectory = workingDirectory || os.tmpdir();
const options: cp.SpawnOptions = {
cwd: workingDirectory,
shell: true
};
const childProc: cp.ChildProcess = cp.spawn(command, args, options);
if (outputChannel) {
outputChannel.appendLog(localize('runningCommand', 'Running command: "{0} {1}"...', command, formattedArgs));
}
childProc.stdout?.on('data', (data: string | Buffer) => {
data = data.toString();
cmdOutput = cmdOutput.concat(data);
cmdOutputIncludingStderr = cmdOutputIncludingStderr.concat(data);
if (outputChannel) {
outputChannel.append(data);
}
});
childProc.stderr?.on('data', (data: string | Buffer) => {
data = data.toString();
cmdOutputIncludingStderr = cmdOutputIncludingStderr.concat(data);
if (outputChannel) {
outputChannel.append(data);
}
});
childProc.on('error', reject);
childProc.on('close', (code: number) => {
resolve({
code,
cmdOutput,
cmdOutputIncludingStderr,
formattedArgs
});
});
});
}