From 279e4a474d153816fa9596c27efc139c17c87483 Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Thu, 9 Jun 2022 17:38:22 +0300 Subject: [PATCH] fix: lookup library in Flutter's .pub_cache folder --- lib/src/util.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/src/util.dart b/lib/src/util.dart index 001e488..d81b8c7 100644 --- a/lib/src/util.dart +++ b/lib/src/util.dart @@ -6,6 +6,7 @@ import 'dart:io'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_opts_bindings.dart'; import 'package:path/path.dart' as path; +import 'package:pub_cache/pub_cache.dart'; const libgit2Version = '1.4.3'; final libDir = path.join('.dart_tool', 'libgit2'); @@ -52,6 +53,21 @@ String? _resolveLibPath(String name) { libPath = path.join(path.dirname(Platform.resolvedExecutable), 'lib', name); if (_doesFileExist(libPath)) return libPath; + String checkCache(PubCache pubCache) { + final pubCacheDir = + pubCache.getLatestVersion('libgit2dart')!.resolve()!.location; + return path.join(pubCacheDir.path, Platform.operatingSystem, name); + } + + // If lib is in Flutter's '.pub_cache' folder. + final env = Platform.environment; + if (env.containsKey('FLUTTER_ROOT')) { + final flutterPubCache = + PubCache(Directory(path.join(env['FLUTTER_ROOT']!, '.pub-cache'))); + libPath = checkCache(flutterPubCache); + if (_doesFileExist(libPath)) return libPath; + } + return null; }