scanReferences function

ReferenceIndex scanReferences(
  1. String root,
  2. Iterable<String> packageNames
)

Indexes where the project at root refers to packageNames.

Implementation

ReferenceIndex scanReferences(String root, Iterable<String> packageNames) {
  final dartFiles = <String, String>{};
  for (final file in _dartFiles(Directory(root))) {
    try {
      final relative = p.posix.joinAll(p.split(p.relative(file.path, from: root)));
      dartFiles[relative] = file.readAsStringSync();
    } on FileSystemException {
      continue;
    }
  }

  final rootYaml = <String, String>{};
  final dir = Directory(root);
  if (dir.existsSync()) {
    for (final entity in dir.listSync()) {
      if (entity is! File) continue;
      final base = p.basename(entity.path);
      if (!(base.endsWith('.yaml') || base.endsWith('.yml'))) continue;
      try {
        rootYaml[base] = entity.readAsStringSync();
      } on FileSystemException {
        continue;
      }
    }
  }

  return ReferenceIndex.fromSources(
    dartFiles: dartFiles,
    rootYaml: rootYaml,
    packageNames: packageNames,
  );
}