startBuildRunner method

Future<void> startBuildRunner({
  1. required String flutterExecutable,
  2. required Package package,
})

Implementation

Future<void> startBuildRunner({
  required String flutterExecutable,
  required Package package,
}) async {
  _guardEntrypointContainsPackage(package);

  if (!package.hasDependency('build_runner')) {
    print(
      'Skip "${package.name}" generation cause "build_runner" '
      'dependency not registered by this package.\n\n',
    );
    return;
  }

  final controller = ShellLinesController();
  final listen = controller.stream.listen(print);
  final dir = package.directory.path;

  final shell = Shell(
    workingDirectory: dir,
    stdout: controller.sink,
  );

  print('\n[${package.name}] build_runner started at directory "$dir"');

  await shell.run(
    '$flutterExecutable pub run build_runner build --delete-conflicting-outputs',
  );

  controller.close();
  await listen.cancel();
}