diff --git a/bin/setup.dart b/bin/setup.dart index 244286a..7f86670 100644 --- a/bin/setup.dart +++ b/bin/setup.dart @@ -2,6 +2,8 @@ import 'dart:io'; import 'package:args/command_runner.dart'; import 'package:cli_util/cli_logging.dart' show Ansi, Logger; +import 'package:libgit2dart/libgit2dart.dart'; +import 'package:libgit2dart/src/libgit2.dart'; import 'package:libgit2dart/src/util.dart'; import 'package:path/path.dart' as path; import 'package:pub_cache/pub_cache.dart'; @@ -21,7 +23,7 @@ Future copyLibrary(String platform) async { final ansi = Ansi(Ansi.terminalSupportsAnsi); if (libgit2IsPresent(platform)) { - if (libgit2Version == getVersionNumber()) { + if (libgit2Version == Libgit2.version) { logger.stdout('${ansi.green}libgit2 for $platform is already available.'); } else { logger.stdout( diff --git a/lib/libgit2dart.dart b/lib/libgit2dart.dart index 345c841..916aa7f 100644 --- a/lib/libgit2dart.dart +++ b/lib/libgit2dart.dart @@ -7,9 +7,9 @@ export 'src/config.dart'; export 'src/credentials.dart'; export 'src/diff.dart'; export 'src/error.dart'; -export 'src/features.dart'; export 'src/git_types.dart'; export 'src/index.dart'; +export 'src/libgit2.dart'; export 'src/mailmap.dart'; export 'src/note.dart'; export 'src/odb.dart'; diff --git a/lib/src/features.dart b/lib/src/features.dart deleted file mode 100644 index b6db02e..0000000 --- a/lib/src/features.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:libgit2dart/libgit2dart.dart'; -import 'package:libgit2dart/src/util.dart'; - -class Features { - /// Returns list of compile time options for libgit2. - static Set get list { - libgit2.git_libgit2_init(); - final featuresInt = libgit2.git_libgit2_features(); - return GitFeature.values - .where((e) => featuresInt & e.value == e.value) - .toSet(); - } -} diff --git a/lib/src/libgit2.dart b/lib/src/libgit2.dart new file mode 100644 index 0000000..5a5bc28 --- /dev/null +++ b/lib/src/libgit2.dart @@ -0,0 +1,34 @@ +import 'dart:ffi'; + +import 'package:ffi/ffi.dart'; +import 'package:libgit2dart/libgit2dart.dart'; +import 'package:libgit2dart/src/util.dart'; + +class Libgit2 { + /// Returns libgit2 version number. + static String get version { + libgit2.git_libgit2_init(); + + final major = calloc(); + final minor = calloc(); + final rev = calloc(); + libgit2.git_libgit2_version(major, minor, rev); + + final version = '${major.value}.${minor.value}.${rev.value}'; + + calloc.free(major); + calloc.free(minor); + calloc.free(rev); + + return version; + } + + /// Returns list of options libgit2 was compiled with. + static Set get features { + libgit2.git_libgit2_init(); + final featuresInt = libgit2.git_libgit2_features(); + return GitFeature.values + .where((e) => featuresInt & e.value == e.value) + .toSet(); + } +} diff --git a/lib/src/util.dart b/lib/src/util.dart index 3d34d51..e252c95 100644 --- a/lib/src/util.dart +++ b/lib/src/util.dart @@ -4,7 +4,6 @@ import 'dart:ffi'; import 'dart:io'; import 'package:cli_util/cli_logging.dart' show Ansi, Logger; -import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:path/path.dart' as path; import 'package:pub_cache/pub_cache.dart'; @@ -89,23 +88,6 @@ DynamicLibrary loadLibrary(String name) { final libgit2 = Libgit2(loadLibrary(getLibName())); -String getVersionNumber() { - libgit2.git_libgit2_init(); - - final major = calloc(); - final minor = calloc(); - final rev = calloc(); - libgit2.git_libgit2_version(major, minor, rev); - - final version = '${major.value}.${minor.value}.${rev.value}'; - - calloc.free(major); - calloc.free(minor); - calloc.free(rev); - - return version; -} - bool isValidShaHex(String str) { final hexRegExp = RegExp(r'^[0-9a-fA-F]+$'); return hexRegExp.hasMatch(str) && diff --git a/test/features_test.dart b/test/features_test.dart deleted file mode 100644 index 457dcb4..0000000 --- a/test/features_test.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:libgit2dart/libgit2dart.dart'; -import 'package:test/test.dart'; - -void main() { - group('Features', () { - test('returns list of compile time options for libgit2', () { - expect( - Features.list, - {GitFeature.threads, GitFeature.https, GitFeature.ssh, GitFeature.nsec}, - ); - }); - }); -} diff --git a/test/libgit2_test.dart b/test/libgit2_test.dart new file mode 100644 index 0000000..5ac089a --- /dev/null +++ b/test/libgit2_test.dart @@ -0,0 +1,19 @@ +import 'package:libgit2dart/libgit2dart.dart'; +import 'package:libgit2dart/src/libgit2.dart'; +import 'package:libgit2dart/src/util.dart'; +import 'package:test/test.dart'; + +void main() { + group('Libgit2', () { + test('returns up to date version of libgit2', () { + expect(Libgit2.version, libgit2Version); + }); + + test('returns list of options libgit2 was compiled with', () { + expect( + Libgit2.features, + {GitFeature.threads, GitFeature.https, GitFeature.ssh, GitFeature.nsec}, + ); + }); + }); +}