run method

Future<void> run(
  1. PipedConfig config
)

Run the piped pipeline.

Implementation

Future<void> run(PipedConfig config) async {
  final input = config.inputStream ?? stdin;
  final output = config.outputSink ?? stdout;
  final encoding = const SystemEncoding();

  if (config.lineByLine) {
    await for (final chunk in input.transform(encoding.decoder)) {
      for (final line in chunk.split('\n')) {
        if (line.trim().isEmpty) continue;
        final result = await _processChunk(line, config);
        output.writeln(result);
      }
    }
  } else {
    final buffer = StringBuffer();
    await for (final chunk in input.transform(encoding.decoder)) {
      buffer.write(chunk);
    }
    final result = await _processChunk(buffer.toString(), config);
    output.writeln(result);
  }

  await output.flush();
}