findBuiltLibraryFileWithMeta function

BuiltLibrarySearchResult? findBuiltLibraryFileWithMeta({
  1. required Directory builtLibraryDir,
  2. required String platform,
  3. required String canonicalName,
})

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);
}