execute method
Runs command to completion on nodeId, capturing its output.
Implementation
Future<ExecResult> execute({
required String nodeId,
required String command,
List<String> args = const [],
Map<String, String> env = const {},
String? cwd,
}) async {
final session = await openSession(
nodeId: nodeId,
mode: SessionMode.exec,
command: command,
args: args,
env: env,
cwd: cwd,
);
final out = BytesBuilder(copy: false);
final err = BytesBuilder(copy: false);
final outDone = session.stdout.forEach(out.add);
final errDone = session.stderr.forEach(err.add);
final code = await session.exitCode;
await Future.wait([outDone, errDone]).catchError((_) => const <void>[]);
return ExecResult(
exitCode: code,
stdout: out.takeBytes(),
stderr: err.takeBytes(),
);
}