buildRunnerServe function

Future<int> buildRunnerServe (List<String> args, Sink<Null> buildSucceededSink, Completer<Null> served)

Runs pub run build_runner serve with args.

Returns a future that will resolve with the exitCode of the build_runner process. buildSucceededSink will be notified of each succeeded build. served will be completed when the build_runner starts serving.

Implementation

Future<int> buildRunnerServe(List<String> args, Sink<Null> buildSucceededSink,
    Completer<Null> served) async {
  final proc = await Process.start(
      _pubBin.path, new List.from(_buildRunnerServePubArgs)..addAll(args));
  final log = new Logger(loggers.buildRunner);
  // The listener for this logger can resolve the log level based on the prefix,
  // so the log level from this logger doesn't matter much.
  proc.stdout
      .transform(UTF8.decoder)
      .transform(_branchSucceededBuildTo(buildSucceededSink))
      .transform(_detectServing(served))
      .listen(log.info);
  proc.stderr.transform(UTF8.decoder).listen(log.severe);
  return proc.exitCode;
}