start method

Future<Null> start ()

Runs build_runner serve.

This method must be called only once.

Implementation

Future<Null> start() async {
  if (_startHasBeenCalled)
    throw new StateError(
        'For each instance, `start` must be called only once.');
  _startHasBeenCalled = true;

  /// A logger which records `stdout` and `stderr` of the `build_runner` process.
  ///
  /// The default listener for this logger can resolve the log level based on the prefix, so the log level from this logger doesn't matter much.
  /// However, it should be able to differentiate between level `< SEVERE` and `>= SEVERE` because the default listener would write to `stdout` and `stderr` respectively.

  _proc = await Process.start(_pubBin.path, _args);
  _proc.stdout
      .transform(UTF8.decoder)
      .transform(_branchSucceededBuildTo(_onBuildController))
      .transform(_detectServing(_servedCompleter))
      .listen(logger.info);
  _proc.stderr.transform(UTF8.decoder).listen(logger.severe);
}