doRun method

  1. @override
Future<int> doRun()
override

Implementation

@override
Future<int> doRun() async {
  printInfo('Start code generation...');

  final rootDirPath = p.current;
  printVerbose('Current directory: $rootDirPath');
  printVerbose('Search for pubspec with $_buildRunner dependency');

  final pubspecFiles = await _findPubspecs();
  printVerbose('Found ${pubspecFiles.length} pubspec files');

  if (pubspecFiles.isEmpty) {
    return success(
      message: '🔍 No pubspec.yaml with $_buildRunner dependency found.',
    );
  }

  for (final pubspecFile in pubspecFiles) {
    final relativePath = p.relative(pubspecFile.path, from: rootDirPath);
    printInfo('Generating code for $relativePath');

    setCurrentDir(pubspecFile.parent.path);
    printVerbose('Current directory: ${Directory.current.path}');

    await flutter.runPubOrFail(
      'build_runner',
      [
        'build',
        '--delete-conflicting-outputs',
      ],
      prependWithPubGet: true,
      title: 'Running code generation',
    );

    printInfo('Generation for $relativePath - DONE');
  }

  return success(message: '🛠️ Code generation complete!');
}