findStaleGeneratedFiles method

List<File> findStaleGeneratedFiles()

Returns *.g.dart files whose companion source file no longer declares them via a part '*.g.dart'; directive — i.e. stale leftovers.

Implementation

List<File> findStaleGeneratedFiles() {
  final stale = <File>[];
  for (final gFile in listGeneratedFiles()) {
    final sourcePath = gFile.path.replaceAll('.g.dart', '.dart');
    final sourceFile = File(sourcePath);
    if (!sourceFile.existsSync()) {
      stale.add(gFile);
      continue;
    }
    final sourceContent = sourceFile.readAsStringSync();
    final basename = p.basename(gFile.path);
    final hasPartDirective = RegExp(
      "part\\s+'${RegExp.escape(basename)}'",
    ).hasMatch(sourceContent);
    if (!hasPartDirective) stale.add(gFile);
  }
  return stale;
}