export function tryExecuteCommandAsync()

in src/helpers/command.ts [70:110]


export function tryExecuteCommandAsync(
  workingDirectory: string | undefined,
  writeToOutputChannel: boolean,
  commands: string,
  ...args: string[]
): ICommandExecute {
  let cmdOutput: string = '';
  let cmdOutputIncludingStderr: string = '';

  const childProcess = spawnProcess(workingDirectory, commands, args);
  const result = new Promise((resolve: (res: any) => void, reject: (error: Error) => void): void => {
    childProcess.stdout.on('data', (data: string | Buffer) => {
      data = data.toString();
      cmdOutput = cmdOutput.concat(data);
      cmdOutputIncludingStderr = cmdOutputIncludingStderr.concat(data);

      if (writeToOutputChannel) {
        Output.output(Constants.outputChannel.executeCommand, data);
      }
    });

    childProcess.stderr.on('data', (data: string | Buffer) => {
      data = data.toString();
      cmdOutputIncludingStderr = cmdOutputIncludingStderr.concat(data);

      if (writeToOutputChannel) {
        Output.output(Constants.outputChannel.executeCommand, data);
      }
    });

    childProcess.on('error', reject);
    childProcess.on('exit', (code: number) => {
      resolve({ cmdOutput, cmdOutputIncludingStderr, code });
    });
  });

  return {
    childProcess,
    result,
  };
}