findBuiltLibraryFileWithMeta function
Finds canonicalName below the platform directory, including nested build
output directories, and optionally the legacy flat layout.
Implementation
BuiltLibrarySearchResult? findBuiltLibraryFileWithMeta({
required Directory builtLibraryDir,
required String platform,
required String canonicalName,
}) {
final platformDir = Directory(p.join(builtLibraryDir.path, platform));
final platformCandidate = File(p.join(platformDir.path, canonicalName));
if (platformCandidate.existsSync()) {
return BuiltLibrarySearchResult(platformCandidate, false);
}
final flatCandidate = File(p.join(builtLibraryDir.path, canonicalName));
if (flatCandidate.existsSync()) {
return BuiltLibrarySearchResult(flatCandidate, true);
}
if (!platformDir.existsSync()) {
return null;
}
final recursiveMatches =
platformDir
.listSync(recursive: true, followLinks: false)
.whereType<File>()
.where((file) => p.basename(file.path) == canonicalName)
.toList()
..sort((a, b) => a.path.compareTo(b.path));
if (recursiveMatches.isEmpty) return null;
return BuiltLibrarySearchResult(recursiveMatches.first, false);
}