resolve method

Implementation

@override
Future<ResolvedPrebuilt?> resolve(PrebuiltResolutionContext context) async {
  final canonicalName = canonicalLibraryName(
    target: context.target,
    libraryStem: context.libraryStem,
    payload: context.payload,
  );

  final searchRoots = _computeSearchRoots(context);

  for (final root in searchRoots) {
    final candidate = File(
      p.join(root.path, directoryName, context.target.label, canonicalName),
    );
    if (candidate.existsSync()) {
      try {
        final hash = await ArchiveReader.sha256Hash(candidate);
        return ResolvedPrebuiltFound(
          file: ResolvedFile(path: candidate.path, hash: hash),
          source: PrebuiltSource.localCache,
        );
      } catch (_) {
        // Invalid file, skip.
      }
    }
  }

  return null;
}