scanReferences function
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,
);
}