cmdSpy method

Future<(int, String, String)> cmdSpy(
  1. String command,
  2. List<String> args, [
  3. String? runIn
])

Implementation

Future<(int, String, String)> cmdSpy(
  String command,
  List<String> args, [
  String? runIn,
]) async {
  Process process = await Process.start(
    command,
    args,
    mode: ProcessStartMode.normal,
    workingDirectory: runIn,
  );

  StringBuffer stdoutBuffer = StringBuffer();
  StringBuffer stderrBuffer = StringBuffer();

  process.stdout.transform(utf8.decoder).listen((data) {
    stdout.write(data);
    stdoutBuffer.write(data);
  });

  process.stderr.transform(utf8.decoder).listen((data) {
    stderr.write(data);
    stderrBuffer.write(data);
  });

  return (
    await process.exitCode,
    stdoutBuffer.toString(),
    stderrBuffer.toString(),
  );
}