move version getter into separate class

This commit is contained in:
Aleksey Kulikov 2021-11-01 17:08:03 +03:00
parent 41e9a39bce
commit 116c6d4fac
7 changed files with 57 additions and 46 deletions

View file

@ -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';

View file

@ -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<GitFeature> get list {
libgit2.git_libgit2_init();
final featuresInt = libgit2.git_libgit2_features();
return GitFeature.values
.where((e) => featuresInt & e.value == e.value)
.toSet();
}
}

34
lib/src/libgit2.dart Normal file
View file

@ -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<Int32>();
final minor = calloc<Int32>();
final rev = calloc<Int32>();
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<GitFeature> get features {
libgit2.git_libgit2_init();
final featuresInt = libgit2.git_libgit2_features();
return GitFeature.values
.where((e) => featuresInt & e.value == e.value)
.toSet();
}
}

View file

@ -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<Int32>();
final minor = calloc<Int32>();
final rev = calloc<Int32>();
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) &&