start method

void start(
  1. String path
)

Implementation

void start(String path) async {
  if (_running) return;

  _running = true;

  final pkg = getPkgNameFromPath(path);

  logPlugin("Creating log for $pkg package");

  _buildRunnerSink = File(
    _logUri.resolve("./brh_$pkg.log").toFilePath(),
  ).openWrite(mode: .writeOnly);

  try {
    final isWorkspace = await _isDartWorkspace(path);
    final args = [
      "run",
      "build_runner",
      "watch",
      if (isWorkspace) "--workspace",
    ];

    logPlugin("Starting Build Runner in $path using ${args.skip(1)}");

    _process = await Process.start("dart", args, workingDirectory: path);

    logPlugin("Attching stdout & stderr to Log File");

    _stdGroup
      ..add(_process!.stdout)
      ..add(_process!.stderr);

    _stdGroupSubscription = _stdGroup.stream
        .transform(Utf8Decoder())
        .listen(logBuildRunner);

    logPlugin("Build Runner running in $path");
  } catch (e) {
    logPlugin("Error running Build Runner: $e");
    _running = false;
  }
}