scanProject method

List<ProviderNode> scanProject()

Scans targetPath and returns the flat list of detected ProviderNodes.

Implementation

List<ProviderNode> scanProject() {
  final irNodes = <ProviderNode>[];
  final targetType = FileSystemEntity.typeSync(
    targetPath,
    followLinks: false,
  );

  if (targetType == FileSystemEntityType.notFound) {
    print('Directory $targetPath does not exist.');
    return irNodes;
  }

  if (targetType == FileSystemEntityType.file) {
    return _scanFile(File(targetPath));
  }

  final directory = Directory(targetPath);

  final dartFiles = directory
      .listSync(recursive: true)
      .whereType<File>()
      .where(
        (file) =>
            file.path.endsWith('.dart') && !file.path.contains('.g.dart'),
      );

  for (final file in dartFiles) {
    final fileNodes = _scanFile(file);
    irNodes.addAll(fileNodes);
  }

  return irNodes;
}