processAllFiles method

Future<ProcessingResult> processAllFiles({
  1. void onFileProcessed(
    1. FileInfo info
    )?,
  2. void onProgress(
    1. int processed,
    2. int total
    )?,
})

Process all files and collect results

Implementation

Future<ProcessingResult> processAllFiles({
  void Function(FileInfo info)? onFileProcessed,
  void Function(int processed, int total)? onProgress,
}) async {
  final files = <FileInfo>[];
  final ignoredFiles = <FileInfo>[];
  final ignoreReasons = <String, int>{};

  // First, collect all files to get total count
  final allFiles = await discoverFiles().toList();
  final int total = allFiles.length;
  int processed = 0;

  for (final file in allFiles) {
    final info = await processFile(file);
    processed++;

    if (info.wasIgnored) {
      ignoredFiles.add(info);
      final String reason = info.ignoreReason ?? 'Unknown';
      ignoreReasons[reason] = (ignoreReasons[reason] ?? 0) + 1;

      if (config.verbose) {
        verbose('Ignoring: ${info.relativePath} ($reason)');
      }
    } else {
      files.add(info);

      if (config.verbose) {
        verbose('Processing: ${info.relativePath}');
      }
    }

    onFileProcessed?.call(info);
    onProgress?.call(processed, total);
  }

  return ProcessingResult(
    files: files,
    ignoredFiles: ignoredFiles,
    ignoreReasons: ignoreReasons,
  );
}