runCommandStreaming method

Future<RunnerProcessResult> runCommandStreaming(
  1. String command,
  2. List<String> arguments
)

Implementation

Future<RunnerProcessResult> runCommandStreaming(
  String command,
  List<String> arguments,
) async {
  try {
    final process = await Process.start(
      command,
      arguments,
      workingDirectory: workingDirectory,
      runInShell: Platform.isWindows,
    );

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

    process.stdout.listen((data) {
      final output = String.fromCharCodes(data);
      stdoutBuffer.write(output);
      if (verbose) stdout.write(output);
    });

    process.stderr.listen((data) {
      final output = String.fromCharCodes(data);
      stderrBuffer.write(output);
      if (verbose) stderr.write(output);
    });

    final exitCode = await process.exitCode;

    return RunnerProcessResult(
      exitCode: exitCode,
      stdout: stdoutBuffer.toString(),
      stderr: stderrBuffer.toString(),
    );
  } catch (e) {
    return RunnerProcessResult(
      exitCode: -1,
      stdout: '',
      stderr: e.toString(),
    );
  }
}