discoverFiles method

Stream<File> discoverFiles()

Discover all matching files in the source directory

Implementation

Stream<File> discoverFiles() async* {
  final sourceDir = p.join(workingDir, config.sourceDir);
  final dir = Directory(sourceDir);

  if (!dir.existsSync()) {
    throw FileSystemException(
      'Source directory does not exist: ${config.sourceDir}',
      sourceDir,
    );
  }

  final extensions = config.effectiveExtensions;

  // Create glob patterns for each extension
  for (final ext in extensions) {
    // Remove leading dot if present for glob pattern
    final extPattern = ext.startsWith('.') ? ext.substring(1) : ext;
    final glob = Glob('**.$extPattern');

    await for (final FileSystemEntity entity in glob.list(root: sourceDir)) {
      final file = File(entity.path);
      if (await file.exists()) {
        yield file;
      }
    }
  }
}