Compare commits

...

2 commits

Author SHA1 Message Date
Aleksey Kulikov
a708d54b0a chore: v1.1.1 2022-06-08 15:39:19 +03:00
Aleksey Kulikov
b0b8067203
fix: lookup library in correct locations (#64) 2022-06-08 15:31:27 +03:00
6 changed files with 30 additions and 35 deletions

View file

@ -1,3 +1,9 @@
## 1.1.1
- fix: lookup library in correct locations
- feat: add ability to pass optional notes location to `Note.list(...)` method
## 1.1.0 ## 1.1.0
- feat: add ability to get and set libgit2 global options - feat: add ability to get and set libgit2 global options
@ -6,7 +12,7 @@
- feat: add ability to remove entries in index with `resetDefault(...)` method - feat: add ability to remove entries in index with `resetDefault(...)` method
- feat: add ability to compare objects (value based equality). - feat: add ability to compare objects (value based equality)
Note: comparison of Repository objects have naive implementation. Comparison is based on repository path, and previously loaded into memory index, odb, etc. might be different. Use with caution. Note: comparison of Repository objects have naive implementation. Comparison is based on repository path, and previously loaded into memory index, odb, etc. might be different. Use with caution.

View file

@ -49,13 +49,13 @@ print(Libgit2.version);
**Note**: The following steps only required if you are using package in Dart application (Flutter application will have libgit2 library bundled automatically when you build for release). **Note**: The following steps only required if you are using package in Dart application (Flutter application will have libgit2 library bundled automatically when you build for release).
After compiling the application you should run: After adding the package as dependency you should run:
```shell ```shell
dart run libgit2dart:setup dart run libgit2dart:setup
``` ```
That'll copy the prebuilt libgit2 library for your platform into `.dart_tool/libgit2/<platform>/` which you'll need to add to the same folder as your executable. That'll copy the prebuilt libgit2 library for your platform into `.dart_tool/libgit2/<platform>/` which you'll need to add to the same folder as your executable after compilation.
If you upgrade the version of libgit2dart package in your dependencies you should run the following commands to have the latest libgit2 library for your platform to provide with your application: If you upgrade the version of libgit2dart package in your dependencies you should run the following commands to have the latest libgit2 library for your platform to provide with your application:

View file

@ -23,15 +23,23 @@ Future<void> copyLibrary(String platform) async {
); );
} }
} else { } else {
final pubCache = PubCache(); String? checkCache(PubCache pubCache) =>
final pubCacheDir = pubCache.getLatestVersion('libgit2dart')?.resolve()?.location.path;
pubCache.getLatestVersion('libgit2dart')!.resolve()!.location;
final libPath = checkCache(PubCache()) ??
checkCache(
PubCache(
Directory(
path.join(Platform.environment['FLUTTER_ROOT']!, '.pub-cache'),
),
),
);
final libName = getLibName(); final libName = getLibName();
stdout.writeln('Copying libgit2 for $platform'); stdout.writeln('Copying libgit2 for $platform');
final destination = path.join(libDir, platform); final destination = path.join(libDir, platform);
Directory(destination).createSync(recursive: true); Directory(destination).createSync(recursive: true);
File(path.join(pubCacheDir.path, platform, libName)).copySync( File(path.join(libPath!, platform, libName)).copySync(
path.join(destination, libName), path.join(destination, libName),
); );

View file

@ -6,7 +6,6 @@ import 'dart:io';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'package:libgit2dart/src/bindings/libgit2_opts_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_opts_bindings.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:pub_cache/pub_cache.dart';
const libgit2Version = '1.4.3'; const libgit2Version = '1.4.3';
final libDir = path.join('.dart_tool', 'libgit2'); final libDir = path.join('.dart_tool', 'libgit2');
@ -32,13 +31,8 @@ bool _doesFileExist(String path) {
/// Returns path to dynamic library if found. /// Returns path to dynamic library if found.
String? _resolveLibPath(String name) { String? _resolveLibPath(String name) {
var libPath = path.join(Directory.current.path, name);
// If lib is in Present Working Directory.
if (_doesFileExist(libPath)) return libPath;
// If lib is in Present Working Directory's '.dart_tool/libgit2/[platform]' folder. // If lib is in Present Working Directory's '.dart_tool/libgit2/[platform]' folder.
libPath = path.join( var libPath = path.join(
Directory.current.path, Directory.current.path,
libDir, libDir,
Platform.operatingSystem, Platform.operatingSystem,
@ -50,33 +44,20 @@ String? _resolveLibPath(String name) {
libPath = path.join(Directory.current.path, Platform.operatingSystem, name); libPath = path.join(Directory.current.path, Platform.operatingSystem, name);
if (_doesFileExist(libPath)) return libPath; if (_doesFileExist(libPath)) return libPath;
String checkCache(PubCache pubCache) { // If lib is in executable's folder.
final pubCacheDir = libPath = path.join(path.dirname(Platform.resolvedExecutable), name);
pubCache.getLatestVersion('libgit2dart')!.resolve()!.location;
return path.join(pubCacheDir.path, Platform.operatingSystem, name);
}
// If lib is in Dart's '.pub_cache' folder.
libPath = checkCache(PubCache());
if (_doesFileExist(libPath)) return libPath; if (_doesFileExist(libPath)) return libPath;
// If lib is in Flutter's '.pub_cache' folder. // If lib is in executable's bundled 'lib' folder.
final env = Platform.environment; libPath = path.join(path.dirname(Platform.resolvedExecutable), 'lib', name);
if (env.containsKey('FLUTTER_ROOT')) { if (_doesFileExist(libPath)) return libPath;
final flutterPubCache =
PubCache(Directory(path.join(env['FLUTTER_ROOT']!, '.pub-cache')));
libPath = checkCache(flutterPubCache);
if (_doesFileExist(libPath)) return libPath;
}
return null; return null;
} }
DynamicLibrary loadLibrary(String name) { DynamicLibrary loadLibrary(String name) {
try { try {
return DynamicLibrary.open( return DynamicLibrary.open(_resolveLibPath(name) ?? name);
_resolveLibPath(name) ?? name,
);
} catch (e) { } catch (e) {
stderr.writeln( stderr.writeln(
'Failed to open the library. Make sure that libgit2 library is bundled ' 'Failed to open the library. Make sure that libgit2 library is bundled '

View file

@ -4,7 +4,7 @@
# #
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'libgit2dart' s.name = 'libgit2dart'
s.version = '1.1.0' s.version = '1.1.1'
s.summary = 'Dart bindings to libgit2.' s.summary = 'Dart bindings to libgit2.'
s.description = <<-DESC s.description = <<-DESC
Dart bindings to libgit2. Dart bindings to libgit2.

View file

@ -2,7 +2,7 @@ name: libgit2dart
description: Dart bindings to libgit2, provides ability to use libgit2 library in Dart and Flutter. description: Dart bindings to libgit2, provides ability to use libgit2 library in Dart and Flutter.
version: 1.1.0 version: 1.1.1
homepage: https://github.com/SkinnyMind/libgit2dart homepage: https://github.com/SkinnyMind/libgit2dart