mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-05 04:39:07 -04:00
move version getter into separate class
This commit is contained in:
parent
41e9a39bce
commit
116c6d4fac
7 changed files with 57 additions and 46 deletions
|
@ -2,6 +2,8 @@ import 'dart:io';
|
||||||
|
|
||||||
import 'package:args/command_runner.dart';
|
import 'package:args/command_runner.dart';
|
||||||
import 'package:cli_util/cli_logging.dart' show Ansi, Logger;
|
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:libgit2dart/src/util.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:pub_cache/pub_cache.dart';
|
import 'package:pub_cache/pub_cache.dart';
|
||||||
|
@ -21,7 +23,7 @@ Future<void> copyLibrary(String platform) async {
|
||||||
final ansi = Ansi(Ansi.terminalSupportsAnsi);
|
final ansi = Ansi(Ansi.terminalSupportsAnsi);
|
||||||
|
|
||||||
if (libgit2IsPresent(platform)) {
|
if (libgit2IsPresent(platform)) {
|
||||||
if (libgit2Version == getVersionNumber()) {
|
if (libgit2Version == Libgit2.version) {
|
||||||
logger.stdout('${ansi.green}libgit2 for $platform is already available.');
|
logger.stdout('${ansi.green}libgit2 for $platform is already available.');
|
||||||
} else {
|
} else {
|
||||||
logger.stdout(
|
logger.stdout(
|
||||||
|
|
|
@ -7,9 +7,9 @@ export 'src/config.dart';
|
||||||
export 'src/credentials.dart';
|
export 'src/credentials.dart';
|
||||||
export 'src/diff.dart';
|
export 'src/diff.dart';
|
||||||
export 'src/error.dart';
|
export 'src/error.dart';
|
||||||
export 'src/features.dart';
|
|
||||||
export 'src/git_types.dart';
|
export 'src/git_types.dart';
|
||||||
export 'src/index.dart';
|
export 'src/index.dart';
|
||||||
|
export 'src/libgit2.dart';
|
||||||
export 'src/mailmap.dart';
|
export 'src/mailmap.dart';
|
||||||
export 'src/note.dart';
|
export 'src/note.dart';
|
||||||
export 'src/odb.dart';
|
export 'src/odb.dart';
|
||||||
|
|
|
@ -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
34
lib/src/libgit2.dart
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,6 @@ import 'dart:ffi';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:cli_util/cli_logging.dart' show Ansi, Logger;
|
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:libgit2dart/src/bindings/libgit2_bindings.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:pub_cache/pub_cache.dart';
|
import 'package:pub_cache/pub_cache.dart';
|
||||||
|
@ -89,23 +88,6 @@ DynamicLibrary loadLibrary(String name) {
|
||||||
|
|
||||||
final libgit2 = Libgit2(loadLibrary(getLibName()));
|
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) {
|
bool isValidShaHex(String str) {
|
||||||
final hexRegExp = RegExp(r'^[0-9a-fA-F]+$');
|
final hexRegExp = RegExp(r'^[0-9a-fA-F]+$');
|
||||||
return hexRegExp.hasMatch(str) &&
|
return hexRegExp.hasMatch(str) &&
|
||||||
|
|
|
@ -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},
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
19
test/libgit2_test.dart
Normal file
19
test/libgit2_test.dart
Normal file
|
@ -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},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue