style: stricter linting

This commit is contained in:
Aleksey Kulikov 2021-10-23 12:31:18 +03:00
parent f3fbc80f8e
commit 4717aab57f
84 changed files with 773 additions and 653 deletions

View file

@ -1,13 +1,50 @@
include: package:lints/recommended.yaml include: package:lints/recommended.yaml
linter:
rules:
- prefer_const_constructors
- sort_constructors_first
- directives_ordering
- lines_longer_than_80_chars
analyzer: analyzer:
strong-mode: strong-mode:
implicit-casts: false implicit-casts: false
implicit-dynamic: false implicit-dynamic: false
exclude: exclude:
- lib/src/bindings/libgit2_bindings.dart - lib/src/bindings/libgit2_bindings.dart
linter:
rules:
- always_use_package_imports
- avoid_bool_literals_in_conditional_expressions
- avoid_dynamic_calls
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_positional_boolean_parameters
- avoid_print
- avoid_redundant_argument_values
- avoid_returning_this
- avoid_returning_null_for_future
- avoid_setters_without_getters
- avoid_slow_async_io
- avoid_type_to_string
- avoid_void_async
- cast_nullable_to_non_nullable
- directives_ordering
- eol_at_end_of_file
- join_return_with_assignment
- library_private_types_in_public_api
- lines_longer_than_80_chars
- missing_whitespace_between_adjacent_strings
- noop_primitive_operations
- parameter_assignments
- prefer_const_constructors
- prefer_constructors_over_static_methods
- prefer_final_in_for_each
- prefer_final_locals
- prefer_if_elements_to_conditional_expressions
- prefer_null_aware_method_calls
- require_trailing_commas
- sort_constructors_first
- type_annotate_public_apis
- use_named_constants
- use_raw_strings
- use_setters_to_change_properties
- use_string_buffers
- sort_unnamed_constructors_first
- sort_pub_dependencies

View file

@ -1,3 +1,5 @@
// ignore_for_file: avoid_print
import 'dart:io'; import 'dart:io';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import '../test/helpers/util.dart'; import '../test/helpers/util.dart';
@ -28,8 +30,10 @@ void main() {
// Set value of config variable // Set value of config variable
repoConfig['core.variable'] = 'value'; repoConfig['core.variable'] = 'value';
print('\nNew value for variable ' print(
'"core.variable": ${repoConfig['core.variable']}'); '\nNew value for variable '
'"core.variable": ${repoConfig['core.variable']}',
);
// Delete variable // Delete variable
repoConfig.delete('core.variable'); repoConfig.delete('core.variable');

View file

@ -1,3 +1,5 @@
// ignore_for_file: avoid_print
import 'dart:io'; import 'dart:io';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import '../test/helpers/util.dart'; import '../test/helpers/util.dart';

View file

@ -1,3 +1,5 @@
// ignore_for_file: avoid_print
import 'dart:io'; import 'dart:io';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../util.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Look up the value of one git attribute for path. /// Look up the value of one git attribute for path.
/// ///

View file

@ -1,9 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../oid.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/oid.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Get the blame for a single file. /// Get the blame for a single file.
/// ///

View file

@ -2,9 +2,9 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Lookup a blob object from a repository. /// Lookup a blob object from a repository.
/// ///
@ -33,7 +33,7 @@ Pointer<git_oid> id(Pointer<git_blob> blob) => libgit2.git_blob_id(blob);
/// Searching for NUL bytes and looking for a reasonable ratio of printable to /// Searching for NUL bytes and looking for a reasonable ratio of printable to
/// non-printable characters among the first 8000 bytes. /// non-printable characters among the first 8000 bytes.
bool isBinary(Pointer<git_blob> blob) { bool isBinary(Pointer<git_blob> blob) {
return libgit2.git_blob_is_binary(blob) == 1 ? true : false; return libgit2.git_blob_is_binary(blob) == 1 || false;
} }
/// Get a read-only buffer with the raw content of a blob. /// Get a read-only buffer with the raw content of a blob.

View file

@ -2,11 +2,10 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/reference.dart' as reference_bindings;
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
import 'reference.dart' as reference_bindings;
/// Return a list of branches. /// Return a list of branches.
/// ///
@ -27,7 +26,7 @@ List<Pointer<git_reference>> list({
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} }
var result = <Pointer<git_reference>>[]; final result = <Pointer<git_reference>>[];
var error = 0; var error = 0;
while (error == 0) { while (error == 0) {
@ -163,7 +162,7 @@ bool isHead(Pointer<git_reference> branch) {
if (result < 0) { if (result < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return result == 1 ? true : false; return result == 1 || false;
} }
} }
@ -179,7 +178,7 @@ bool isCheckedOut(Pointer<git_reference> branch) {
if (result < 0) { if (result < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return result == 1 ? true : false; return result == 1 || false;
} }
} }

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Updates files in the index and the working tree to match the content of the /// Updates files in the index and the working tree to match the content of the
/// commit pointed at by HEAD. /// commit pointed at by HEAD.

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Lookup a commit object from a repository. /// Lookup a commit object from a repository.
/// ///

View file

@ -3,10 +3,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Create a new config instance containing a single on-disk file /// Create a new config instance containing a single on-disk file
Pointer<git_config> open(String path) { Pointer<git_config> open(String path) {

View file

@ -1,7 +1,8 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../util.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Create a new plain-text username and password credential object. /// Create a new plain-text username and password credential object.
Pointer<git_credential> userPass({ Pointer<git_credential> userPass({

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Describe a commit. /// Describe a commit.
/// ///

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Create a diff between the repository index and the workdir directory. /// Create a diff between the repository index and the workdir directory.
Pointer<git_diff> indexToWorkdir({ Pointer<git_diff> indexToWorkdir({

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Determine if a commit is the descendant of another commit. /// Determine if a commit is the descendant of another commit.
/// ///
@ -26,7 +25,7 @@ bool descendantOf({
if (result < 0) { if (result < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return result == 1 ? true : false; return result == 1 || false;
} }
} }

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Update the contents of an existing index object in memory by reading from /// Update the contents of an existing index object in memory by reading from
/// the hard disk. /// the hard disk.
@ -88,7 +87,7 @@ bool find({required Pointer<git_index> indexPointer, required String path}) {
calloc.free(pathC); calloc.free(pathC);
return result == git_error_code.GIT_ENOTFOUND ? false : true; return result != git_error_code.GIT_ENOTFOUND || false;
} }
/// Get the count of entries currently in the index. /// Get the count of entries currently in the index.
@ -209,7 +208,7 @@ void addAll({
required Pointer<git_index> indexPointer, required Pointer<git_index> indexPointer,
required List<String> pathspec, required List<String> pathspec,
}) { }) {
var pathspecC = calloc<git_strarray>(); final pathspecC = calloc<git_strarray>();
final pathPointers = final pathPointers =
pathspec.map((e) => e.toNativeUtf8().cast<Int8>()).toList(); pathspec.map((e) => e.toNativeUtf8().cast<Int8>()).toList();
final strArray = calloc<Pointer<Int8>>(pathspec.length); final strArray = calloc<Pointer<Int8>>(pathspec.length);
@ -290,7 +289,7 @@ void removeAll({
/// Determine if the index contains entries representing file conflicts. /// Determine if the index contains entries representing file conflicts.
bool hasConflicts(Pointer<git_index> index) { bool hasConflicts(Pointer<git_index> index) {
return libgit2.git_index_has_conflicts(index) == 1 ? true : false; return libgit2.git_index_has_conflicts(index) == 1 || false;
} }
/// Return list of conflicts in the index. /// Return list of conflicts in the index.
@ -302,7 +301,7 @@ List<Map<String, Pointer<git_index_entry>>> conflictList(
final iterator = calloc<Pointer<git_index_conflict_iterator>>(); final iterator = calloc<Pointer<git_index_conflict_iterator>>();
libgit2.git_index_conflict_iterator_new(iterator, index); libgit2.git_index_conflict_iterator_new(iterator, index);
var result = <Map<String, Pointer<git_index_entry>>>[]; final result = <Map<String, Pointer<git_index_entry>>>[];
var error = 0; var error = 0;
while (error >= 0) { while (error >= 0) {

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Allocate a new mailmap object. /// Allocate a new mailmap object.
/// ///

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Find a merge base between two commits. /// Find a merge base between two commits.
/// ///

View file

@ -1,8 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Returns list of notes for repository. /// Returns list of notes for repository.
/// ///
@ -19,12 +20,12 @@ List<Map<String, Pointer>> list(Pointer<git_repository> repo) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} }
var result = <Map<String, Pointer>>[]; final result = <Map<String, Pointer>>[];
var nextError = 0; var nextError = 0;
while (nextError >= 0) { while (nextError >= 0) {
final noteOid = calloc<git_oid>(); final noteOid = calloc<git_oid>();
var annotatedOid = calloc<git_oid>(); final annotatedOid = calloc<git_oid>();
nextError = libgit2.git_note_next(noteOid, annotatedOid, iterator.value); nextError = libgit2.git_note_next(noteOid, annotatedOid, iterator.value);
if (nextError >= 0) { if (nextError >= 0) {
final out = calloc<Pointer<git_note>>(); final out = calloc<Pointer<git_note>>();

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Get the object type of an object. /// Get the object type of an object.
int type(Pointer<git_object> obj) => libgit2.git_object_type(obj); int type(Pointer<git_object> obj) => libgit2.git_object_type(obj);

View file

@ -1,12 +1,11 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/oid.dart' as oid_bindings;
import '../oid.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/oid.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
import 'oid.dart' as oid_bindings;
/// Create a new object database with no backends. /// Create a new object database with no backends.
/// ///
@ -66,7 +65,7 @@ bool exists({
required Pointer<git_odb> odbPointer, required Pointer<git_odb> odbPointer,
required Pointer<git_oid> oidPointer, required Pointer<git_oid> oidPointer,
}) { }) {
return libgit2.git_odb_exists(odbPointer, oidPointer) == 1 ? true : false; return libgit2.git_odb_exists(odbPointer, oidPointer) == 1 || false;
} }
/// List of objects in the database. /// List of objects in the database.
@ -91,7 +90,9 @@ List<Oid> objects(Pointer<git_odb> odb) {
const except = -1; const except = -1;
final cb = final cb =
Pointer.fromFunction<Int32 Function(Pointer<git_oid>, Pointer<Void>)>( Pointer.fromFunction<Int32 Function(Pointer<git_oid>, Pointer<Void>)>(
_forEachCb, except); _forEachCb,
except,
);
final error = libgit2.git_odb_foreach(odb, cb, nullptr); final error = libgit2.git_odb_foreach(odb, cb, nullptr);
if (error < 0) { if (error < 0) {

View file

@ -1,9 +1,8 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Parse N characters of a hex formatted object id into a git_oid. /// Parse N characters of a hex formatted object id into a git_oid.
Pointer<git_oid> fromStrN(String hex) { Pointer<git_oid> fromStrN(String hex) {
@ -30,7 +29,7 @@ Pointer<git_oid> fromSHA(String hex) {
/// Copy an already raw oid into a git_oid structure. /// Copy an already raw oid into a git_oid structure.
Pointer<git_oid> fromRaw(Array<Uint8> raw) { Pointer<git_oid> fromRaw(Array<Uint8> raw) {
final out = calloc<git_oid>(); final out = calloc<git_oid>();
var rawC = calloc<Uint8>(20); final rawC = calloc<Uint8>(20);
for (var i = 0; i < 20; i++) { for (var i = 0; i < 20; i++) {
rawC[i] = raw[i]; rawC[i] = raw[i];

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Initialize a new packbuilder. /// Initialize a new packbuilder.
/// ///

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Directly generate a patch from the difference between two buffers. /// Directly generate a patch from the difference between two buffers.
/// ///

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Initializes a rebase operation to rebase the changes in [branchPointer] /// Initializes a rebase operation to rebase the changes in [branchPointer]
/// relative to [upstreamPointer] onto [ontoPointer] another branch. To begin /// relative to [upstreamPointer] onto [ontoPointer] another branch. To begin

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import '../util.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Suggests that the given refdb compress or optimize its references. /// Suggests that the given refdb compress or optimize its references.
/// This mechanism is implementation specific. For on-disk reference databases, /// This mechanism is implementation specific. For on-disk reference databases,

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Get the type of a reference. /// Get the type of a reference.
/// ///
@ -126,16 +125,17 @@ Pointer<git_reference> rename({
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
List<String> list(Pointer<git_repository> repo) { List<String> list(Pointer<git_repository> repo) {
var array = calloc<git_strarray>(); final array = calloc<git_strarray>();
final error = libgit2.git_reference_list(array, repo); final error = libgit2.git_reference_list(array, repo);
var result = <String>[]; final result = <String>[];
if (error < 0) { if (error < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
for (var i = 0; i < array.ref.count; i++) { for (var i = 0; i < array.ref.count; i++) {
result.add( result.add(
array.ref.strings.elementAt(i).value.cast<Utf8>().toDartString()); array.ref.strings.elementAt(i).value.cast<Utf8>().toDartString(),
);
} }
} }
@ -154,27 +154,27 @@ bool hasLog({
calloc.free(refname); calloc.free(refname);
return result == 1 ? true : false; return result == 1 || false;
} }
/// Check if a reference is a local branch. /// Check if a reference is a local branch.
bool isBranch(Pointer<git_reference> ref) { bool isBranch(Pointer<git_reference> ref) {
return libgit2.git_reference_is_branch(ref) == 1 ? true : false; return libgit2.git_reference_is_branch(ref) == 1 || false;
} }
/// Check if a reference is a note. /// Check if a reference is a note.
bool isNote(Pointer<git_reference> ref) { bool isNote(Pointer<git_reference> ref) {
return libgit2.git_reference_is_note(ref) == 1 ? true : false; return libgit2.git_reference_is_note(ref) == 1 || false;
} }
/// Check if a reference is a remote tracking branch. /// Check if a reference is a remote tracking branch.
bool isRemote(Pointer<git_reference> ref) { bool isRemote(Pointer<git_reference> ref) {
return libgit2.git_reference_is_remote(ref) == 1 ? true : false; return libgit2.git_reference_is_remote(ref) == 1 || false;
} }
/// Check if a reference is a tag. /// Check if a reference is a tag.
bool isTag(Pointer<git_reference> ref) { bool isTag(Pointer<git_reference> ref) {
return libgit2.git_reference_is_tag(ref) == 1 ? true : false; return libgit2.git_reference_is_tag(ref) == 1 || false;
} }
/// Create a new direct reference. /// Create a new direct reference.
@ -383,9 +383,7 @@ bool compare({
required Pointer<git_reference> ref1Pointer, required Pointer<git_reference> ref1Pointer,
required Pointer<git_reference> ref2Pointer, required Pointer<git_reference> ref2Pointer,
}) { }) {
return libgit2.git_reference_cmp(ref1Pointer, ref2Pointer) == 0 return libgit2.git_reference_cmp(ref1Pointer, ref2Pointer) == 0 || false;
? true
: false;
} }
/// Recursively peel reference until object of the specified type is found. /// Recursively peel reference until object of the specified type is found.

View file

@ -1,9 +1,8 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Read the reflog for the given reference. /// Read the reflog for the given reference.
/// ///

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Get the source specifier. /// Get the source specifier.
String source(Pointer<git_refspec> refspec) { String source(Pointer<git_refspec> refspec) {
@ -18,7 +17,7 @@ String destination(Pointer<git_refspec> refspec) {
/// Get the force update setting. /// Get the force update setting.
bool force(Pointer<git_refspec> refspec) { bool force(Pointer<git_refspec> refspec) {
return libgit2.git_refspec_force(refspec) == 1 ? true : false; return libgit2.git_refspec_force(refspec) == 1 || false;
} }
/// Get the refspec's string. /// Get the refspec's string.
@ -40,7 +39,7 @@ bool matchesSource({
calloc.free(refnameC); calloc.free(refnameC);
return result == 1 ? true : false; return result == 1 || false;
} }
/// Check if a refspec's destination descriptor matches a reference. /// Check if a refspec's destination descriptor matches a reference.
@ -53,7 +52,7 @@ bool matchesDestination({
calloc.free(refnameC); calloc.free(refnameC);
return result == 1 ? true : false; return result == 1 || false;
} }
/// Transform a reference to its target following the refspec's rules. /// Transform a reference to its target following the refspec's rules.

View file

@ -1,11 +1,12 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import '../callbacks.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart';
import '../oid.dart'; import 'package:libgit2dart/src/callbacks.dart';
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/oid.dart';
import 'remote_callbacks.dart'; import 'package:libgit2dart/src/util.dart';
/// Get a list of the configured remotes for a repo. /// Get a list of the configured remotes for a repo.
/// ///
@ -14,7 +15,7 @@ List<String> list(Pointer<git_repository> repo) {
final out = calloc<git_strarray>(); final out = calloc<git_strarray>();
libgit2.git_remote_list(out, repo); libgit2.git_remote_list(out, repo);
var result = <String>[]; final result = <String>[];
for (var i = 0; i < out.ref.count; i++) { for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString()); result.add(out.ref.strings[i].cast<Utf8>().toDartString());
} }
@ -156,7 +157,7 @@ List<String> rename({
calloc.free(out); calloc.free(out);
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
var result = <String>[]; final result = <String>[];
for (var i = 0; i < out.ref.count; i++) { for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString()); result.add(out.ref.strings[i].cast<Utf8>().toDartString());
} }
@ -247,7 +248,7 @@ List<String> fetchRefspecs(Pointer<git_remote> remote) {
final out = calloc<git_strarray>(); final out = calloc<git_strarray>();
libgit2.git_remote_get_fetch_refspecs(out, remote); libgit2.git_remote_get_fetch_refspecs(out, remote);
var result = <String>[]; final result = <String>[];
for (var i = 0; i < out.ref.count; i++) { for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString()); result.add(out.ref.strings[i].cast<Utf8>().toDartString());
} }
@ -260,7 +261,7 @@ List<String> pushRefspecs(Pointer<git_remote> remote) {
final out = calloc<git_strarray>(); final out = calloc<git_strarray>();
libgit2.git_remote_get_push_refspecs(out, remote); libgit2.git_remote_get_push_refspecs(out, remote);
var result = <String>[]; final result = <String>[];
for (var i = 0; i < out.ref.count; i++) { for (var i = 0; i < out.ref.count; i++) {
result.add(out.ref.strings[i].cast<Utf8>().toDartString()); result.add(out.ref.strings[i].cast<Utf8>().toDartString());
} }
@ -372,12 +373,12 @@ List<Map<String, Object?>> lsRemotes(Pointer<git_remote> remote) {
final size = calloc<Uint64>(); final size = calloc<Uint64>();
libgit2.git_remote_ls(out, size, remote); libgit2.git_remote_ls(out, size, remote);
var result = <Map<String, Object?>>[]; final result = <Map<String, Object?>>[];
for (var i = 0; i < size.value; i++) { for (var i = 0; i < size.value; i++) {
var remote = <String, Object?>{}; final remote = <String, Object?>{};
final local = out[0][i].ref.local == 1 ? true : false; final local = out[0][i].ref.local == 1 || false;
remote['local'] = local; remote['local'] = local;
remote['loid'] = local ? Oid.fromRaw(out[0][i].ref.loid) : null; remote['loid'] = local ? Oid.fromRaw(out[0][i].ref.loid) : null;
@ -412,7 +413,7 @@ void fetch({
String? reflogMessage, String? reflogMessage,
String? proxyOption, String? proxyOption,
}) { }) {
var refspecsC = calloc<git_strarray>(); final refspecsC = calloc<git_strarray>();
final refspecsPointers = final refspecsPointers =
refspecs.map((e) => e.toNativeUtf8().cast<Int8>()).toList(); refspecs.map((e) => e.toNativeUtf8().cast<Int8>()).toList();
final strArray = calloc<Pointer<Int8>>(refspecs.length); final strArray = calloc<Pointer<Int8>>(refspecs.length);
@ -468,7 +469,7 @@ void push({
required Callbacks callbacks, required Callbacks callbacks,
String? proxyOption, String? proxyOption,
}) { }) {
var refspecsC = calloc<git_strarray>(); final refspecsC = calloc<git_strarray>();
final refspecsPointers = final refspecsPointers =
refspecs.map((e) => e.toNativeUtf8().cast<Int8>()).toList(); refspecs.map((e) => e.toNativeUtf8().cast<Int8>()).toList();
final strArray = calloc<Pointer<Int8>>(refspecs.length); final strArray = calloc<Pointer<Int8>>(refspecs.length);

View file

@ -2,16 +2,16 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/credentials.dart'
as credentials_bindings;
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'package:libgit2dart/src/callbacks.dart';
import 'package:libgit2dart/src/credentials.dart';
import 'package:libgit2dart/src/oid.dart';
import 'package:libgit2dart/src/remote.dart';
import 'package:libgit2dart/src/repository.dart';
import 'package:libgit2dart/src/util.dart'; import 'package:libgit2dart/src/util.dart';
import '../callbacks.dart';
import '../credentials.dart';
import '../oid.dart';
import '../remote.dart';
import '../repository.dart';
import 'credentials.dart' as credentials_bindings;
import 'libgit2_bindings.dart';
class RemoteCallbacks { class RemoteCallbacks {
/// Callback function that reports transfer progress. /// Callback function that reports transfer progress.
static void Function(TransferProgress)? transferProgress; static void Function(TransferProgress)? transferProgress;
@ -108,7 +108,7 @@ class RemoteCallbacks {
) { ) {
repo[0] = repositoryFunction!( repo[0] = repositoryFunction!(
path.cast<Utf8>().toDartString(), path.cast<Utf8>().toDartString(),
bare == 1 ? true : false, bare == 1 || false,
).pointer; ).pointer;
return 0; return 0;
@ -146,7 +146,7 @@ class RemoteCallbacks {
} }
if (credentials is UserPass) { if (credentials is UserPass) {
final cred = credentials as UserPass; final cred = credentials! as UserPass;
credPointer[0] = credentials_bindings.userPass( credPointer[0] = credentials_bindings.userPass(
username: cred.username, username: cred.username,
password: cred.password, password: cred.password,
@ -155,7 +155,7 @@ class RemoteCallbacks {
} }
if (credentials is Keypair) { if (credentials is Keypair) {
final cred = credentials as Keypair; final cred = credentials! as Keypair;
credPointer[0] = credentials_bindings.sshKey( credPointer[0] = credentials_bindings.sshKey(
username: cred.username, username: cred.username,
publicKey: cred.pubKey, publicKey: cred.pubKey,
@ -166,13 +166,13 @@ class RemoteCallbacks {
} }
if (credentials is KeypairFromAgent) { if (credentials is KeypairFromAgent) {
final cred = credentials as KeypairFromAgent; final cred = credentials! as KeypairFromAgent;
credPointer[0] = credentials_bindings.sshKeyFromAgent(cred.username); credPointer[0] = credentials_bindings.sshKeyFromAgent(cred.username);
payload.cast<Int8>().value++; payload.cast<Int8>().value++;
} }
if (credentials is KeypairFromMemory) { if (credentials is KeypairFromMemory) {
final cred = credentials as KeypairFromMemory; final cred = credentials! as KeypairFromMemory;
credPointer[0] = credentials_bindings.sshKeyFromMemory( credPointer[0] = credentials_bindings.sshKeyFromMemory(
username: cred.username, username: cred.username,
publicKey: cred.pubKey, publicKey: cred.pubKey,

View file

@ -1,14 +1,13 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../callbacks.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart';
import '../error.dart'; import 'package:libgit2dart/src/callbacks.dart';
import '../remote.dart'; import 'package:libgit2dart/src/error.dart';
import '../repository.dart'; import 'package:libgit2dart/src/remote.dart';
import '../util.dart'; import 'package:libgit2dart/src/repository.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
import 'remote_callbacks.dart';
/// Attempt to open an already-existing repository at [path]. /// Attempt to open an already-existing repository at [path].
/// ///
@ -219,7 +218,7 @@ void setNamespace({
/// Check if a repository is bare or not. /// Check if a repository is bare or not.
bool isBare(Pointer<git_repository> repo) { bool isBare(Pointer<git_repository> repo) {
return libgit2.git_repository_is_bare(repo) == 1 ? true : false; return libgit2.git_repository_is_bare(repo) == 1 || false;
} }
/// Check if a repository is empty. /// Check if a repository is empty.
@ -234,7 +233,7 @@ bool isEmpty(Pointer<git_repository> repo) {
if (error < 0) { if (error < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return error == 1 ? true : false; return error == 1 || false;
} }
} }
@ -268,7 +267,7 @@ bool isHeadDetached(Pointer<git_repository> repo) {
if (error < 0) { if (error < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return error == 1 ? true : false; return error == 1 || false;
} }
} }
@ -284,7 +283,7 @@ bool isBranchUnborn(Pointer<git_repository> repo) {
if (error < 0) { if (error < 0) {
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
return error == 1 ? true : false; return error == 1 || false;
} }
} }
@ -312,7 +311,7 @@ Map<String, String> identity(Pointer<git_repository> repo) {
final name = calloc<Pointer<Int8>>(); final name = calloc<Pointer<Int8>>();
final email = calloc<Pointer<Int8>>(); final email = calloc<Pointer<Int8>>();
libgit2.git_repository_ident(name, email, repo); libgit2.git_repository_ident(name, email, repo);
var identity = <String, String>{}; final identity = <String, String>{};
if (name.value == nullptr && email.value == nullptr) { if (name.value == nullptr && email.value == nullptr) {
return identity; return identity;
@ -369,12 +368,12 @@ Pointer<git_index> index(Pointer<git_repository> repo) {
/// Determine if the repository was a shallow clone. /// Determine if the repository was a shallow clone.
bool isShallow(Pointer<git_repository> repo) { bool isShallow(Pointer<git_repository> repo) {
return libgit2.git_repository_is_shallow(repo) == 1 ? true : false; return libgit2.git_repository_is_shallow(repo) == 1 || false;
} }
/// Check if a repository is a linked work tree. /// Check if a repository is a linked work tree.
bool isWorktree(Pointer<git_repository> repo) { bool isWorktree(Pointer<git_repository> repo) {
return libgit2.git_repository_is_worktree(repo) == 1 ? true : false; return libgit2.git_repository_is_worktree(repo) == 1 || false;
} }
/// Retrieve git's prepared message. /// Retrieve git's prepared message.

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import '../util.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
/// Sets the current head to the specified commit oid and optionally resets the /// Sets the current head to the specified commit oid and optionally resets the
/// index and working tree to match. /// index and working tree to match.

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Parse a revision string for from, to, and intent. /// Parse a revision string for from, to, and intent.
/// ///
@ -69,7 +68,7 @@ Pointer<git_object> revParseSingle({
/// The returned object and reference should be released when no longer needed. /// The returned object and reference should be released when no longer needed.
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
List revParseExt({ List<Pointer> revParseExt({
required Pointer<git_repository> repoPointer, required Pointer<git_repository> repoPointer,
required String spec, required String spec,
}) { }) {
@ -91,7 +90,7 @@ List revParseExt({
calloc.free(referenceOut); calloc.free(referenceOut);
throw LibGit2Error(libgit2.git_error_last()); throw LibGit2Error(libgit2.git_error_last());
} else { } else {
var result = <Pointer>[]; final result = <Pointer>[];
result.add(objectOut.value); result.add(objectOut.value);
if (referenceOut.value != nullptr) { if (referenceOut.value != nullptr) {
result.add(referenceOut.value); result.add(referenceOut.value);

View file

@ -1,11 +1,10 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/commit.dart' as commit_bindings;
import '../error.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'commit.dart' as commit_bindings; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Allocate a new revision walker to iterate through a repo. /// Allocate a new revision walker to iterate through a repo.
/// ///
@ -79,7 +78,7 @@ List<Pointer<git_commit>> walk({
required Pointer<git_repository> repoPointer, required Pointer<git_repository> repoPointer,
required Pointer<git_revwalk> walkerPointer, required Pointer<git_revwalk> walkerPointer,
}) { }) {
var result = <Pointer<git_commit>>[]; final result = <Pointer<git_commit>>[];
var error = 0; var error = 0;
while (error == 0) { while (error == 0) {

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Create a new action signature. /// Create a new action signature.
/// ///

View file

@ -1,13 +1,12 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/checkout.dart' as checkout_bindings;
import '../error.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../oid.dart'; import 'package:libgit2dart/src/error.dart';
import '../stash.dart'; import 'package:libgit2dart/src/oid.dart';
import '../util.dart'; import 'package:libgit2dart/src/stash.dart';
import 'checkout.dart' as checkout_bindings; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Save the local modifications to a new stash. /// Save the local modifications to a new stash.
/// ///
@ -148,18 +147,20 @@ int _stashCb(
Pointer<git_oid> oid, Pointer<git_oid> oid,
Pointer<Void> payload, Pointer<Void> payload,
) { ) {
_stashList.add(Stash( _stashList.add(
index: index, Stash(
message: message.cast<Utf8>().toDartString(), index: index,
oid: Oid(oid), message: message.cast<Utf8>().toDartString(),
)); oid: Oid(oid),
),
);
return 0; return 0;
} }
/// Loop over all the stashed states. /// Loop over all the stashed states.
List<Stash> list(Pointer<git_repository> repo) { List<Stash> list(Pointer<git_repository> repo) {
const except = -1; const except = -1;
git_stash_cb callBack = Pointer.fromFunction(_stashCb, except); final git_stash_cb callBack = Pointer.fromFunction(_stashCb, except);
libgit2.git_stash_foreach(repo, callBack, nullptr); libgit2.git_stash_foreach(repo, callBack, nullptr);
final result = _stashList.toList(growable: false); final result = _stashList.toList(growable: false);

View file

@ -2,10 +2,9 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Gather file status information and populate the git_status_list. /// Gather file status information and populate the git_status_list.
/// ///

View file

@ -1,12 +1,11 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../callbacks.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart';
import '../error.dart'; import 'package:libgit2dart/src/callbacks.dart';
import '../util.dart'; import 'package:libgit2dart/src/error.dart';
import 'libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
import 'remote_callbacks.dart';
/// List of submodule paths. /// List of submodule paths.
/// ///
@ -27,8 +26,10 @@ int _listCb(
List<String> list(Pointer<git_repository> repo) { List<String> list(Pointer<git_repository> repo) {
const except = -1; const except = -1;
final callback = Pointer.fromFunction< final callback = Pointer.fromFunction<
Int32 Function(Pointer<git_submodule>, Pointer<Int8>, Pointer<Void>)>( Int32 Function(Pointer<git_submodule>, Pointer<Int8>, Pointer<Void>)>(
_listCb, except); _listCb,
except,
);
libgit2.git_submodule_foreach(repo, callback, nullptr); libgit2.git_submodule_foreach(repo, callback, nullptr);

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Fill a list with all the tags in the repository. /// Fill a list with all the tags in the repository.
/// ///
@ -13,7 +12,7 @@ List<String> list(Pointer<git_repository> repo) {
final out = calloc<git_strarray>(); final out = calloc<git_strarray>();
final error = libgit2.git_tag_list(out, repo); final error = libgit2.git_tag_list(out, repo);
var result = <String>[]; final result = <String>[];
if (error < 0) { if (error < 0) {
calloc.free(out); calloc.free(out);

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Get the id of a tree. /// Get the id of a tree.
Pointer<git_oid> id(Pointer<git_tree> tree) => libgit2.git_tree_id(tree); Pointer<git_oid> id(Pointer<git_tree> tree) => libgit2.git_tree_id(tree);

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Create a new tree builder. /// Create a new tree builder.
/// ///

View file

@ -2,10 +2,9 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import '../error.dart'; import 'package:libgit2dart/src/error.dart';
import '../util.dart'; import 'package:libgit2dart/src/util.dart';
import 'libgit2_bindings.dart';
/// Add a new working tree. /// Add a new working tree.
/// ///
@ -81,7 +80,7 @@ bool isPrunable(Pointer<git_worktree> wt) {
GIT_WORKTREE_PRUNE_OPTIONS_VERSION, GIT_WORKTREE_PRUNE_OPTIONS_VERSION,
); );
return libgit2.git_worktree_is_prunable(wt, opts) > 0 ? true : false; return libgit2.git_worktree_is_prunable(wt, opts) > 0 || false;
} }
/// Prune working tree. /// Prune working tree.
@ -126,7 +125,7 @@ String path(Pointer<git_worktree> wt) {
/// A worktree may be locked if the linked working tree is stored on a portable /// A worktree may be locked if the linked working tree is stored on a portable
/// device which is not available. /// device which is not available.
bool isLocked(Pointer<git_worktree> wt) { bool isLocked(Pointer<git_worktree> wt) {
return libgit2.git_worktree_is_locked(nullptr, wt) == 1 ? true : false; return libgit2.git_worktree_is_locked(nullptr, wt) == 1 || false;
} }
/// Lock worktree if not already locked. /// Lock worktree if not already locked.
@ -140,7 +139,7 @@ void unlock(Pointer<git_worktree> wt) => libgit2.git_worktree_unlock(wt);
/// A valid worktree requires both the git data structures inside the linked /// A valid worktree requires both the git data structures inside the linked
/// parent repository and the linked working copy to be present. /// parent repository and the linked working copy to be present.
bool isValid(Pointer<git_worktree> wt) { bool isValid(Pointer<git_worktree> wt) {
return libgit2.git_worktree_validate(wt) == 0 ? true : false; return libgit2.git_worktree_validate(wt) == 0 || false;
} }
/// Free a previously allocated worktree. /// Free a previously allocated worktree.

View file

@ -3,9 +3,8 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/blame.dart' as bindings;
import 'bindings/blame.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart';
class Blame with IterableMixin<BlameHunk> { class Blame with IterableMixin<BlameHunk> {
/// Returns the blame for a single file. /// Returns the blame for a single file.
@ -67,10 +66,12 @@ class Blame with IterableMixin<BlameHunk> {
/// ///
/// Throws [RangeError] if index out of range. /// Throws [RangeError] if index out of range.
BlameHunk operator [](int index) { BlameHunk operator [](int index) {
return BlameHunk(bindings.getHunkByIndex( return BlameHunk(
blamePointer: _blamePointer, bindings.getHunkByIndex(
index: index, blamePointer: _blamePointer,
)); index: index,
),
);
} }
/// Returns the hunk that relates to the given line number (1-based) in the /// Returns the hunk that relates to the given line number (1-based) in the
@ -78,10 +79,12 @@ class Blame with IterableMixin<BlameHunk> {
/// ///
/// Throws [RangeError] if [lineNumber] is out of range. /// Throws [RangeError] if [lineNumber] is out of range.
BlameHunk forLine(int lineNumber) { BlameHunk forLine(int lineNumber) {
return BlameHunk(bindings.getHunkByLine( return BlameHunk(
blamePointer: _blamePointer, bindings.getHunkByLine(
lineNumber: lineNumber, blamePointer: _blamePointer,
)); lineNumber: lineNumber,
),
);
} }
/// Releases memory allocated for blame object. /// Releases memory allocated for blame object.
@ -105,7 +108,7 @@ class BlameHunk {
/// Whether the hunk has been tracked to a boundary commit /// Whether the hunk has been tracked to a boundary commit
/// (the root, or the commit specified in [oldestCommit] argument). /// (the root, or the commit specified in [oldestCommit] argument).
bool get isBoundary { bool get isBoundary {
return _blameHunkPointer.ref.boundary == 1 ? true : false; return _blameHunkPointer.ref.boundary == 1 || false;
} }
/// 1-based line number where this hunk begins, in the final version of the /// 1-based line number where this hunk begins, in the final version of the
@ -168,10 +171,12 @@ class _BlameIterator implements Iterator<BlameHunk> {
if (index == count) { if (index == count) {
return false; return false;
} else { } else {
currentHunk = BlameHunk(bindings.getHunkByIndex( currentHunk = BlameHunk(
blamePointer: _blamePointer, bindings.getHunkByIndex(
index: index, blamePointer: _blamePointer,
)); index: index,
),
);
index++; index++;
return true; return true;
} }

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/blob.dart' as bindings;
import 'bindings/blob.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/patch.dart' as patch_bindings;
import 'bindings/patch.dart' as patch_bindings;
class Blob { class Blob {
/// Initializes a new instance of [Blob] class from provided pointer to /// Initializes a new instance of [Blob] class from provided pointer to
@ -32,11 +31,13 @@ class Blob {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
static Oid create({required Repository repo, required String content}) { static Oid create({required Repository repo, required String content}) {
return Oid(bindings.create( return Oid(
repoPointer: repo.pointer, bindings.create(
buffer: content, repoPointer: repo.pointer,
len: content.length, buffer: content,
)); len: content.length,
),
);
} }
/// Creates a new blob from the file in working directory of a repository and /// Creates a new blob from the file in working directory of a repository and
@ -48,10 +49,12 @@ class Blob {
required Repository repo, required Repository repo,
required String relativePath, required String relativePath,
}) { }) {
return Oid(bindings.createFromWorkdir( return Oid(
repoPointer: repo.pointer, bindings.createFromWorkdir(
relativePath: relativePath, repoPointer: repo.pointer,
)); relativePath: relativePath,
),
);
} }
/// Creates a new blob from the file in filesystem and writes it to the ODB. /// Creates a new blob from the file in filesystem and writes it to the ODB.
@ -115,7 +118,7 @@ class Blob {
); );
return Patch( return Patch(
result['patch'] as Pointer<git_patch>, result['patch']! as Pointer<git_patch>,
result['a'], result['a'],
result['b'], result['b'],
); );
@ -160,7 +163,7 @@ class Blob {
); );
return Patch( return Patch(
result['patch'] as Pointer<git_patch>, result['patch']! as Pointer<git_patch>,
result['a'], result['a'],
result['b'], result['b'],
); );

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/branch.dart' as bindings;
import 'bindings/branch.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/reference.dart' as reference_bindings;
import 'bindings/reference.dart' as reference_bindings;
class Branch { class Branch {
/// Initializes a new instance of [Branch] class from provided pointer to /// Initializes a new instance of [Branch] class from provided pointer to

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/commit.dart' as bindings;
import 'bindings/commit.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/tree.dart' as tree_bindings;
import 'bindings/tree.dart' as tree_bindings;
class Commit { class Commit {
/// Initializes a new instance of [Commit] class from provided pointer to /// Initializes a new instance of [Commit] class from provided pointer to
@ -67,17 +66,19 @@ class Commit {
required Tree tree, required Tree tree,
required List<Commit> parents, required List<Commit> parents,
}) { }) {
return Oid(bindings.create( return Oid(
repoPointer: repo.pointer, bindings.create(
updateRef: updateRef, repoPointer: repo.pointer,
authorPointer: author.pointer, updateRef: updateRef,
committerPointer: committer.pointer, authorPointer: author.pointer,
messageEncoding: messageEncoding, committerPointer: committer.pointer,
message: message, messageEncoding: messageEncoding,
treePointer: tree.pointer, message: message,
parentCount: parents.length, treePointer: tree.pointer,
parents: parents.map((e) => e.pointer).toList(), parentCount: parents.length,
)); parents: parents.map((e) => e.pointer).toList(),
),
);
} }
/// Amends an existing commit by replacing only non-null values. /// Amends an existing commit by replacing only non-null values.
@ -109,16 +110,18 @@ class Commit {
String? message, String? message,
String? messageEncoding, String? messageEncoding,
}) { }) {
return Oid(bindings.amend( return Oid(
repoPointer: repo.pointer, bindings.amend(
commitPointer: commit.pointer, repoPointer: repo.pointer,
authorPointer: author?.pointer, commitPointer: commit.pointer,
committerPointer: committer?.pointer, authorPointer: author?.pointer,
treePointer: tree?.pointer, committerPointer: committer?.pointer,
updateRef: updateRef, treePointer: tree?.pointer,
message: message, updateRef: updateRef,
messageEncoding: messageEncoding, message: message,
)); messageEncoding: messageEncoding,
),
);
} }
/// Wncoding for the message of a commit, as a string representing a standard /// Wncoding for the message of a commit, as a string representing a standard
@ -145,7 +148,7 @@ class Commit {
/// List of parent commits [Oid]s. /// List of parent commits [Oid]s.
List<Oid> get parents { List<Oid> get parents {
var parents = <Oid>[]; final parents = <Oid>[];
final parentCount = bindings.parentCount(_commitPointer); final parentCount = bindings.parentCount(_commitPointer);
for (var i = 0; i < parentCount; i++) { for (var i = 0; i < parentCount; i++) {
@ -161,10 +164,12 @@ class Commit {
/// Tree pointed to by a commit. /// Tree pointed to by a commit.
Tree get tree { Tree get tree {
return Tree(tree_bindings.lookup( return Tree(
repoPointer: bindings.owner(_commitPointer), tree_bindings.lookup(
oidPointer: bindings.tree(_commitPointer), repoPointer: bindings.owner(_commitPointer),
)); oidPointer: bindings.tree(_commitPointer),
),
);
} }
/// Releases memory allocated for commit object. /// Releases memory allocated for commit object.

View file

@ -4,10 +4,9 @@ import 'dart:io';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/config.dart' as bindings;
import 'bindings/config.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/util.dart';
import 'util.dart';
class Config with IterableMixin<ConfigEntry> { class Config with IterableMixin<ConfigEntry> {
/// Initializes a new instance of [Config] class from provided /// Initializes a new instance of [Config] class from provided
@ -84,10 +83,12 @@ class Config with IterableMixin<ConfigEntry> {
/// Returns the [ConfigEntry] of a [variable]. /// Returns the [ConfigEntry] of a [variable].
ConfigEntry operator [](String variable) { ConfigEntry operator [](String variable) {
return ConfigEntry(bindings.getEntry( return ConfigEntry(
configPointer: _configPointer, bindings.getEntry(
variable: variable, configPointer: _configPointer,
)); variable: variable,
),
);
} }
/// Sets the [value] of config [variable]. /// Sets the [value] of config [variable].

View file

@ -2,11 +2,10 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/diff.dart' as bindings;
import 'bindings/diff.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/patch.dart' as patch_bindings;
import 'bindings/patch.dart' as patch_bindings; import 'package:libgit2dart/src/util.dart';
import 'util.dart';
class Diff { class Diff {
/// Initializes a new instance of [Diff] class from provided /// Initializes a new instance of [Diff] class from provided
@ -43,12 +42,16 @@ class Diff {
/// revisions. /// revisions.
List<DiffDelta> get deltas { List<DiffDelta> get deltas {
final length = bindings.length(_diffPointer); final length = bindings.length(_diffPointer);
var deltas = <DiffDelta>[]; final deltas = <DiffDelta>[];
for (var i = 0; i < length; i++) { for (var i = 0; i < length; i++) {
deltas.add(DiffDelta(bindings.getDeltaByIndex( deltas.add(
diffPointer: _diffPointer, DiffDelta(
index: i, bindings.getDeltaByIndex(
))); diffPointer: _diffPointer,
index: i,
),
),
);
} }
return deltas; return deltas;
} }
@ -56,7 +59,7 @@ class Diff {
/// A List of [Patch]es. /// A List of [Patch]es.
List<Patch> get patches { List<Patch> get patches {
final length = bindings.length(_diffPointer); final length = bindings.length(_diffPointer);
var patches = <Patch>[]; final patches = <Patch>[];
for (var i = 0; i < length; i++) { for (var i = 0; i < length; i++) {
patches.add(Patch.fromDiff(diff: this, index: i)); patches.add(Patch.fromDiff(diff: this, index: i));
} }
@ -336,7 +339,7 @@ class DiffHunk {
/// Header of a hunk. /// Header of a hunk.
String get header { String get header {
var list = <int>[]; final list = <int>[];
for (var i = 0; i < _diffHunkPointer.ref.header_len; i++) { for (var i = 0; i < _diffHunkPointer.ref.header_len; i++) {
list.add(_diffHunkPointer.ref.header[i]); list.add(_diffHunkPointer.ref.header[i]);
} }
@ -345,13 +348,17 @@ class DiffHunk {
/// List of lines in a hunk of a patch. /// List of lines in a hunk of a patch.
List<DiffLine> get lines { List<DiffLine> get lines {
var lines = <DiffLine>[]; final lines = <DiffLine>[];
for (var i = 0; i < linesCount; i++) { for (var i = 0; i < linesCount; i++) {
lines.add(DiffLine(patch_bindings.lines( lines.add(
patchPointer: _patchPointer, DiffLine(
hunkIndex: index, patch_bindings.lines(
lineOfHunk: i, patchPointer: _patchPointer,
))); hunkIndex: index,
lineOfHunk: i,
),
),
);
} }
return lines; return lines;
} }

View file

@ -1,6 +1,6 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
/// Details of the last error that occurred. /// Details of the last error that occurred.
class LibGit2Error { class LibGit2Error {

View file

@ -1,5 +1,5 @@
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Features { class Features {
/// Returns list of compile time options for libgit2. /// Returns list of compile time options for libgit2.

View file

@ -3,10 +3,9 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/diff.dart' as diff_bindings;
import 'bindings/diff.dart' as diff_bindings; import 'package:libgit2dart/src/bindings/index.dart' as bindings;
import 'bindings/index.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart';
class Index with IterableMixin<IndexEntry> { class Index with IterableMixin<IndexEntry> {
/// Initializes a new instance of [Index] class from provided /// Initializes a new instance of [Index] class from provided
@ -26,16 +25,20 @@ class Index with IterableMixin<IndexEntry> {
/// [ArgumentError] if nothing found for provided path. /// [ArgumentError] if nothing found for provided path.
IndexEntry operator [](Object value) { IndexEntry operator [](Object value) {
if (value is int) { if (value is int) {
return IndexEntry(bindings.getByIndex( return IndexEntry(
indexPointer: _indexPointer, bindings.getByIndex(
position: value, indexPointer: _indexPointer,
)); position: value,
),
);
} else { } else {
return IndexEntry(bindings.getByPath( return IndexEntry(
indexPointer: _indexPointer, bindings.getByPath(
path: value as String, indexPointer: _indexPointer,
stage: 0, path: value as String,
)); stage: 0,
),
);
} }
} }
@ -56,7 +59,7 @@ class Index with IterableMixin<IndexEntry> {
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
Map<String, ConflictEntry> get conflicts { Map<String, ConflictEntry> get conflicts {
final conflicts = bindings.conflictList(_indexPointer); final conflicts = bindings.conflictList(_indexPointer);
var result = <String, ConflictEntry>{}; final result = <String, ConflictEntry>{};
for (final entry in conflicts) { for (final entry in conflicts) {
IndexEntry? ancestor, our, their; IndexEntry? ancestor, our, their;
@ -166,10 +169,12 @@ class Index with IterableMixin<IndexEntry> {
if (repo == null) { if (repo == null) {
return Oid(bindings.writeTree(_indexPointer)); return Oid(bindings.writeTree(_indexPointer));
} else { } else {
return Oid(bindings.writeTreeTo( return Oid(
indexPointer: _indexPointer, bindings.writeTreeTo(
repoPointer: repo.pointer, indexPointer: _indexPointer,
)); repoPointer: repo.pointer,
),
);
} }
} }
@ -201,13 +206,15 @@ class Index with IterableMixin<IndexEntry> {
int contextLines = 3, int contextLines = 3,
int interhunkLines = 0, int interhunkLines = 0,
}) { }) {
return Diff(diff_bindings.indexToWorkdir( return Diff(
repoPointer: bindings.owner(_indexPointer), diff_bindings.indexToWorkdir(
indexPointer: _indexPointer, repoPointer: bindings.owner(_indexPointer),
flags: flags.fold(0, (acc, e) => acc | e.value), indexPointer: _indexPointer,
contextLines: contextLines, flags: flags.fold(0, (acc, e) => acc | e.value),
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} }
/// Creates a diff between a tree and repository index. /// Creates a diff between a tree and repository index.
@ -227,14 +234,16 @@ class Index with IterableMixin<IndexEntry> {
int contextLines = 3, int contextLines = 3,
int interhunkLines = 0, int interhunkLines = 0,
}) { }) {
return Diff(diff_bindings.treeToIndex( return Diff(
repoPointer: bindings.owner(_indexPointer), diff_bindings.treeToIndex(
treePointer: tree.pointer, repoPointer: bindings.owner(_indexPointer),
indexPointer: _indexPointer, treePointer: tree.pointer,
flags: flags.fold(0, (acc, e) => acc | e.value), indexPointer: _indexPointer,
contextLines: contextLines, flags: flags.fold(0, (acc, e) => acc | e.value),
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} }
/// Releases memory allocated for index object. /// Releases memory allocated for index object.
@ -338,10 +347,12 @@ class _IndexIterator implements Iterator<IndexEntry> {
if (_index == count) { if (_index == count) {
return false; return false;
} else { } else {
_currentEntry = IndexEntry(bindings.getByIndex( _currentEntry = IndexEntry(
indexPointer: _indexPointer, bindings.getByIndex(
position: _index, indexPointer: _indexPointer,
)); position: _index,
),
);
_index++; _index++;
return true; return true;
} }

View file

@ -1,8 +1,8 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/mailmap.dart' as bindings; import 'package:libgit2dart/src/bindings/mailmap.dart' as bindings;
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Mailmap { class Mailmap {
/// Initializes a new instance of [Mailmap] class. /// Initializes a new instance of [Mailmap] class.
@ -62,10 +62,12 @@ class Mailmap {
/// Resolves a [signature] to use real names and emails with a mailmap. /// Resolves a [signature] to use real names and emails with a mailmap.
Signature resolveSignature(Signature signature) { Signature resolveSignature(Signature signature) {
return Signature(bindings.resolveSignature( return Signature(
mailmapPointer: _mailmapPointer, bindings.resolveSignature(
signaturePointer: signature.pointer, mailmapPointer: _mailmapPointer,
)); signaturePointer: signature.pointer,
),
);
} }
/// Adds a single entry to the given mailmap object. If the entry already /// Adds a single entry to the given mailmap object. If the entry already
@ -79,7 +81,7 @@ class Mailmap {
required String replaceEmail, required String replaceEmail,
}) { }) {
if (replaceEmail.trim().isEmpty) { if (replaceEmail.trim().isEmpty) {
throw ArgumentError.value('replaceEmail can\'t be empty'); throw ArgumentError.value("replaceEmail can't be empty");
} else { } else {
bindings.addEntry( bindings.addEntry(
mailmapPointer: _mailmapPointer, mailmapPointer: _mailmapPointer,

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/note.dart' as bindings; import 'package:libgit2dart/src/bindings/note.dart' as bindings;
class Note { class Note {
/// Initializes a new instance of the [Note] class from provided /// Initializes a new instance of the [Note] class from provided
@ -64,15 +64,17 @@ class Note {
String notesRef = 'refs/notes/commits', String notesRef = 'refs/notes/commits',
bool force = false, bool force = false,
}) { }) {
return Oid(bindings.create( return Oid(
repoPointer: repo.pointer, bindings.create(
authorPointer: author.pointer, repoPointer: repo.pointer,
committerPointer: committer.pointer, authorPointer: author.pointer,
oidPointer: annotatedOid.pointer, committerPointer: committer.pointer,
note: note, oidPointer: annotatedOid.pointer,
notesRef: notesRef, note: note,
force: force, notesRef: notesRef,
)); force: force,
),
);
} }
/// Deletes the note for an [annotatedOid]. /// Deletes the note for an [annotatedOid].
@ -111,10 +113,12 @@ class Note {
static List<Note> list(Repository repo) { static List<Note> list(Repository repo) {
final notesPointers = bindings.list(repo.pointer); final notesPointers = bindings.list(repo.pointer);
return notesPointers return notesPointers
.map((e) => Note( .map(
e['note'] as Pointer<git_note>, (e) => Note(
e['annotatedOid'] as Pointer<git_oid>, e['note']! as Pointer<git_note>,
)) e['annotatedOid']! as Pointer<git_oid>,
),
)
.toList(); .toList();
} }

View file

@ -1,8 +1,8 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/odb.dart' as bindings; import 'package:libgit2dart/src/bindings/odb.dart' as bindings;
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Odb { class Odb {
/// Initializes a new instance of [Odb] class from provided /// Initializes a new instance of [Odb] class from provided
@ -64,10 +64,12 @@ class Odb {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
OdbObject read(Oid oid) { OdbObject read(Oid oid) {
return OdbObject(bindings.read( return OdbObject(
odbPointer: _odbPointer, bindings.read(
oidPointer: oid.pointer, odbPointer: _odbPointer,
)); oidPointer: oid.pointer,
),
);
} }
/// Writes raw [data] to into the object database. /// Writes raw [data] to into the object database.
@ -84,11 +86,13 @@ class Odb {
type == GitObject.refDelta) { type == GitObject.refDelta) {
throw ArgumentError.value('$type is invalid type'); throw ArgumentError.value('$type is invalid type');
} else { } else {
return Oid(bindings.write( return Oid(
odbPointer: _odbPointer, bindings.write(
type: type.value, odbPointer: _odbPointer,
data: data, type: type.value,
)); data: data,
),
);
} }
} }

View file

@ -1,11 +1,10 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/odb.dart' as odb_bindings;
import 'bindings/odb.dart' as odb_bindings; import 'package:libgit2dart/src/bindings/oid.dart' as bindings;
import 'bindings/oid.dart' as bindings; import 'package:libgit2dart/src/util.dart';
import 'util.dart';
class Oid { class Oid {
/// Initializes a new instance of [Oid] class from provided /// Initializes a new instance of [Oid] class from provided
@ -52,7 +51,7 @@ class Oid {
String get sha => bindings.toSHA(_oidPointer); String get sha => bindings.toSHA(_oidPointer);
@override @override
bool operator ==(other) { bool operator ==(Object other) {
return (other is Oid) && return (other is Oid) &&
(bindings.compare(aPointer: _oidPointer, bPointer: other._oidPointer) == (bindings.compare(aPointer: _oidPointer, bPointer: other._oidPointer) ==
0); 0);

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/packbuilder.dart' as bindings; import 'package:libgit2dart/src/bindings/packbuilder.dart' as bindings;
class PackBuilder { class PackBuilder {
/// Initializes a new instance of [PackBuilder] class. /// Initializes a new instance of [PackBuilder] class.

View file

@ -1,9 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/patch.dart' as bindings; import 'package:libgit2dart/src/bindings/patch.dart' as bindings;
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Patch { class Patch {
/// Initializes a new instance of [Patch] class from provided /// Initializes a new instance of [Patch] class from provided
@ -82,7 +82,7 @@ class Patch {
throw ArgumentError('Provided argument(s) is not Blob or String'); throw ArgumentError('Provided argument(s) is not Blob or String');
} }
_patchPointer = result['patch'] as Pointer<git_patch>; _patchPointer = result['patch']! as Pointer<git_patch>;
_aPointer = result['a']; _aPointer = result['a'];
_bPointer = result['b']; _bPointer = result['b'];
} }
@ -149,12 +149,14 @@ class Patch {
for (var i = 0; i < length; i++) { for (var i = 0; i < length; i++) {
final hunk = bindings.hunk(patchPointer: _patchPointer, hunkIndex: i); final hunk = bindings.hunk(patchPointer: _patchPointer, hunkIndex: i);
hunks.add(DiffHunk( hunks.add(
_patchPointer, DiffHunk(
hunk['hunk'] as Pointer<git_diff_hunk>, _patchPointer,
hunk['linesN'] as int, hunk['hunk']! as Pointer<git_diff_hunk>,
i, hunk['linesN']! as int,
)); i,
),
);
} }
return hunks; return hunks;

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/rebase.dart' as bindings; import 'package:libgit2dart/src/bindings/rebase.dart' as bindings;
class Rebase { class Rebase {
/// Initializes a rebase operation to rebase the changes in [branch] relative /// Initializes a rebase operation to rebase the changes in [branch] relative

View file

@ -1,12 +1,12 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/object.dart' as object_bindings;
import 'bindings/object.dart' as object_bindings; import 'package:libgit2dart/src/bindings/refdb.dart' as refdb_bindings;
import 'bindings/refdb.dart' as refdb_bindings; import 'package:libgit2dart/src/bindings/reference.dart' as bindings;
import 'bindings/reference.dart' as bindings; import 'package:libgit2dart/src/bindings/repository.dart'
import 'bindings/repository.dart' as repository_bindings; as repository_bindings;
class Reference { class Reference {
/// Initializes a new instance of the [Reference] class. /// Initializes a new instance of the [Reference] class.
@ -62,7 +62,8 @@ class Reference {
); );
} else { } else {
throw ArgumentError.value( throw ArgumentError.value(
'$target must be either Oid or String reference name'); '$target must be either Oid or String reference name',
);
} }
} }
@ -185,7 +186,8 @@ class Reference {
_refPointer = newPointer; _refPointer = newPointer;
} else { } else {
throw ArgumentError.value( throw ArgumentError.value(
'$target must be either Oid or String reference name'); '$target must be either Oid or String reference name',
);
} }
} }
@ -261,7 +263,7 @@ class Reference {
Repository get owner => Repository(bindings.owner(_refPointer)); Repository get owner => Repository(bindings.owner(_refPointer));
@override @override
bool operator ==(other) { bool operator ==(Object other) {
return (other is Reference) && return (other is Reference) &&
bindings.compare( bindings.compare(
ref1Pointer: _refPointer, ref1Pointer: _refPointer,

View file

@ -1,8 +1,8 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/reflog.dart' as bindings; import 'package:libgit2dart/src/bindings/reflog.dart' as bindings;
class RefLog with IterableMixin<RefLogEntry> { class RefLog with IterableMixin<RefLogEntry> {
/// Initializes a new instance of [RefLog] class from provided [Reference]. /// Initializes a new instance of [RefLog] class from provided [Reference].
@ -23,10 +23,12 @@ class RefLog with IterableMixin<RefLogEntry> {
/// Requesting the reflog entry with an index of 0 will return the most /// Requesting the reflog entry with an index of 0 will return the most
/// recently created entry. /// recently created entry.
RefLogEntry operator [](int index) { RefLogEntry operator [](int index) {
return RefLogEntry(bindings.getByIndex( return RefLogEntry(
reflogPointer: _reflogPointer, bindings.getByIndex(
index: index, reflogPointer: _reflogPointer,
)); index: index,
),
);
} }
/// Releases memory allocated for reflog object. /// Releases memory allocated for reflog object.
@ -74,10 +76,12 @@ class _RefLogIterator implements Iterator<RefLogEntry> {
if (_index == _count) { if (_index == _count) {
return false; return false;
} else { } else {
_currentEntry = RefLogEntry(bindings.getByIndex( _currentEntry = RefLogEntry(
reflogPointer: _reflogPointer, bindings.getByIndex(
index: _index, reflogPointer: _reflogPointer,
)); index: _index,
),
);
_index++; _index++;
return true; return true;
} }

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/refspec.dart' as bindings; import 'package:libgit2dart/src/bindings/refspec.dart' as bindings;
class Refspec { class Refspec {
/// Initializes a new instance of the [Refspec] class /// Initializes a new instance of the [Refspec] class

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/remote.dart' as bindings; import 'package:libgit2dart/src/bindings/remote.dart' as bindings;
class Remote { class Remote {
/// Lookups remote with provided [name] in a [repo]sitory. /// Lookups remote with provided [name] in a [repo]sitory.
@ -174,10 +174,12 @@ class Remote {
/// [Refspec] object from the remote at provided position. /// [Refspec] object from the remote at provided position.
Refspec getRefspec(int index) { Refspec getRefspec(int index) {
return Refspec(bindings.getRefspec( return Refspec(
remotePointer: _remotePointer, bindings.getRefspec(
position: index, remotePointer: _remotePointer,
)); position: index,
),
);
} }
/// List of fetch refspecs. /// List of fetch refspecs.

View file

@ -3,19 +3,19 @@ import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/attr.dart' as attr_bindings; import 'package:libgit2dart/src/bindings/attr.dart' as attr_bindings;
import 'bindings/checkout.dart' as checkout_bindings; import 'package:libgit2dart/src/bindings/checkout.dart' as checkout_bindings;
import 'bindings/commit.dart' as commit_bindings; import 'package:libgit2dart/src/bindings/commit.dart' as commit_bindings;
import 'bindings/describe.dart' as describe_bindings; import 'package:libgit2dart/src/bindings/describe.dart' as describe_bindings;
import 'bindings/diff.dart' as diff_bindings; import 'package:libgit2dart/src/bindings/diff.dart' as diff_bindings;
import 'bindings/graph.dart' as graph_bindings; import 'package:libgit2dart/src/bindings/graph.dart' as graph_bindings;
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/merge.dart' as merge_bindings; import 'package:libgit2dart/src/bindings/merge.dart' as merge_bindings;
import 'bindings/object.dart' as object_bindings; import 'package:libgit2dart/src/bindings/object.dart' as object_bindings;
import 'bindings/repository.dart' as bindings; import 'package:libgit2dart/src/bindings/repository.dart' as bindings;
import 'bindings/reset.dart' as reset_bindings; import 'package:libgit2dart/src/bindings/reset.dart' as reset_bindings;
import 'bindings/status.dart' as status_bindings; import 'package:libgit2dart/src/bindings/status.dart' as status_bindings;
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Repository { class Repository {
/// Initializes a new instance of the [Repository] class from provided /// Initializes a new instance of the [Repository] class from provided
@ -262,7 +262,8 @@ class Repository {
bindings.setHead(repoPointer: _repoPointer, refname: target); bindings.setHead(repoPointer: _repoPointer, refname: target);
} else { } else {
throw ArgumentError.value( throw ArgumentError.value(
'$target must be either Oid or String reference name'); '$target must be either Oid or String reference name',
);
} }
} }
@ -650,12 +651,14 @@ class Repository {
required Commit ourCommit, required Commit ourCommit,
int mainline = 0, int mainline = 0,
}) { }) {
return Index(commit_bindings.revertCommit( return Index(
repoPointer: _repoPointer, commit_bindings.revertCommit(
revertCommitPointer: revertCommit.pointer, repoPointer: _repoPointer,
ourCommitPointer: ourCommit.pointer, revertCommitPointer: revertCommit.pointer,
mainline: mainline, ourCommitPointer: ourCommit.pointer,
)); mainline: mainline,
),
);
} }
/// Finds a single object and intermediate reference (if there is one) by a /// Finds a single object and intermediate reference (if there is one) by a
@ -768,13 +771,14 @@ class Repository {
bool force = false, bool force = false,
}) { }) {
return Tag.create( return Tag.create(
repo: this, repo: this,
tagName: tagName, tagName: tagName,
target: target, target: target,
targetType: targetType, targetType: targetType,
tagger: tagger, tagger: tagger,
message: message, message: message,
force: force); force: force,
);
} }
/// Deletes an existing tag reference with provided [name]. /// Deletes an existing tag reference with provided [name].
@ -880,9 +884,9 @@ class Repository {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
Map<String, Set<GitStatus>> get status { Map<String, Set<GitStatus>> get status {
var result = <String, Set<GitStatus>>{}; final result = <String, Set<GitStatus>>{};
var list = status_bindings.listNew(_repoPointer); final list = status_bindings.listNew(_repoPointer);
var count = status_bindings.listEntryCount(list); final count = status_bindings.listEntryCount(list);
for (var i = 0; i < count; i++) { for (var i = 0; i < count; i++) {
late String path; late String path;
@ -945,11 +949,13 @@ class Repository {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
Oid mergeBase({required Oid a, required Oid b}) { Oid mergeBase({required Oid a, required Oid b}) {
return Oid(merge_bindings.mergeBase( return Oid(
repoPointer: _repoPointer, merge_bindings.mergeBase(
aPointer: a.pointer, repoPointer: _repoPointer,
bPointer: b.pointer, aPointer: a.pointer,
)); bPointer: b.pointer,
),
);
} }
/// Analyzes the given branch's [theirHead] oid and determines the /// Analyzes the given branch's [theirHead] oid and determines the
@ -1058,14 +1064,16 @@ class Repository {
Set<GitMergeFlag> mergeFlags = const {GitMergeFlag.findRenames}, Set<GitMergeFlag> mergeFlags = const {GitMergeFlag.findRenames},
Set<GitMergeFileFlag> fileFlags = const {GitMergeFileFlag.defaults}, Set<GitMergeFileFlag> fileFlags = const {GitMergeFileFlag.defaults},
}) { }) {
return Index(merge_bindings.mergeCommits( return Index(
repoPointer: _repoPointer, merge_bindings.mergeCommits(
ourCommitPointer: ourCommit.pointer, repoPointer: _repoPointer,
theirCommitPointer: theirCommit.pointer, ourCommitPointer: ourCommit.pointer,
favor: favor.value, theirCommitPointer: theirCommit.pointer,
mergeFlags: mergeFlags.fold(0, (acc, e) => acc | e.value), favor: favor.value,
fileFlags: fileFlags.fold(0, (acc, e) => acc | e.value), mergeFlags: mergeFlags.fold(0, (acc, e) => acc | e.value),
)); fileFlags: fileFlags.fold(0, (acc, e) => acc | e.value),
),
);
} }
/// Merges two trees, producing an index that reflects the result of the /// Merges two trees, producing an index that reflects the result of the
@ -1101,15 +1109,17 @@ class Repository {
List<GitMergeFlag> mergeFlags = const [GitMergeFlag.findRenames], List<GitMergeFlag> mergeFlags = const [GitMergeFlag.findRenames],
List<GitMergeFileFlag> fileFlags = const [GitMergeFileFlag.defaults], List<GitMergeFileFlag> fileFlags = const [GitMergeFileFlag.defaults],
}) { }) {
return Index(merge_bindings.mergeTrees( return Index(
repoPointer: _repoPointer, merge_bindings.mergeTrees(
ancestorTreePointer: ancestorTree?.pointer ?? nullptr, repoPointer: _repoPointer,
ourTreePointer: ourTree.pointer, ancestorTreePointer: ancestorTree?.pointer ?? nullptr,
theirTreePointer: theirTree.pointer, ourTreePointer: ourTree.pointer,
favor: favor.value, theirTreePointer: theirTree.pointer,
mergeFlags: mergeFlags.fold(0, (acc, element) => acc | element.value), favor: favor.value,
fileFlags: fileFlags.fold(0, (acc, element) => acc | element.value), mergeFlags: mergeFlags.fold(0, (acc, element) => acc | element.value),
)); fileFlags: fileFlags.fold(0, (acc, element) => acc | element.value),
),
);
} }
/// Cherry-picks the provided [commit], producing changes in the index and /// Cherry-picks the provided [commit], producing changes in the index and
@ -1243,41 +1253,49 @@ class Repository {
final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); final int flagsInt = flags.fold(0, (acc, e) => acc | e.value);
if (a is Tree && b is Tree) { if (a is Tree && b is Tree) {
return Diff(diff_bindings.treeToTree( return Diff(
repoPointer: _repoPointer, diff_bindings.treeToTree(
oldTreePointer: a.pointer, repoPointer: _repoPointer,
newTreePointer: b.pointer, oldTreePointer: a.pointer,
flags: flagsInt, newTreePointer: b.pointer,
contextLines: contextLines, flags: flagsInt,
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} else if (a is Tree && b == null) { } else if (a is Tree && b == null) {
if (cached) { if (cached) {
return Diff(diff_bindings.treeToIndex( return Diff(
diff_bindings.treeToIndex(
repoPointer: _repoPointer,
treePointer: a.pointer,
indexPointer: index.pointer,
flags: flagsInt,
contextLines: contextLines,
interhunkLines: interhunkLines,
),
);
} else {
return Diff(
diff_bindings.treeToWorkdir(
repoPointer: _repoPointer,
treePointer: a.pointer,
flags: flagsInt,
contextLines: contextLines,
interhunkLines: interhunkLines,
),
);
}
} else if (a == null && b == null) {
return Diff(
diff_bindings.indexToWorkdir(
repoPointer: _repoPointer, repoPointer: _repoPointer,
treePointer: a.pointer,
indexPointer: index.pointer, indexPointer: index.pointer,
flags: flagsInt, flags: flagsInt,
contextLines: contextLines, contextLines: contextLines,
interhunkLines: interhunkLines, interhunkLines: interhunkLines,
)); ),
} else { );
return Diff(diff_bindings.treeToWorkdir(
repoPointer: _repoPointer,
treePointer: a.pointer,
flags: flagsInt,
contextLines: contextLines,
interhunkLines: interhunkLines,
));
}
} else if (a == null && b == null) {
return Diff(diff_bindings.indexToWorkdir(
repoPointer: _repoPointer,
indexPointer: index.pointer,
flags: flagsInt,
contextLines: contextLines,
interhunkLines: interhunkLines,
));
} else { } else {
throw ArgumentError.notNull('a'); throw ArgumentError.notNull('a');
} }

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/revparse.dart' as bindings; import 'package:libgit2dart/src/bindings/revparse.dart' as bindings;
class RevParse { class RevParse {
/// Finds a single object and intermediate reference (if there is one) by a /// Finds a single object and intermediate reference (if there is one) by a
@ -23,11 +23,9 @@ class RevParse {
repoPointer: repo.pointer, repoPointer: repo.pointer,
spec: spec, spec: spec,
); );
object = Commit(pointers[0].cast<git_commit>() as Pointer<git_commit>); object = Commit(pointers[0].cast<git_commit>());
if (pointers.length == 2) { if (pointers.length == 2) {
reference = Reference( reference = Reference(pointers[1].cast<git_reference>());
pointers[1].cast<git_reference>() as Pointer<git_reference>,
);
} else { } else {
reference = null; reference = null;
} }
@ -47,12 +45,14 @@ class RevParse {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
static Commit single({required Repository repo, required String spec}) { static Commit single({required Repository repo, required String spec}) {
return Commit(bindings return Commit(
.revParseSingle( bindings
repoPointer: repo.pointer, .revParseSingle(
spec: spec, repoPointer: repo.pointer,
) spec: spec,
.cast()); )
.cast(),
);
} }
/// Parses a revision string for from, to, and intent. /// Parses a revision string for from, to, and intent.
@ -62,10 +62,12 @@ class RevParse {
/// ///
/// Throws a [LibGit2Error] if error occured. /// Throws a [LibGit2Error] if error occured.
static RevSpec range({required Repository repo, required String spec}) { static RevSpec range({required Repository repo, required String spec}) {
return RevSpec(bindings.revParse( return RevSpec(
repoPointer: repo.pointer, bindings.revParse(
spec: spec, repoPointer: repo.pointer,
)); spec: spec,
),
);
} }
@override @override

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/revwalk.dart' as bindings; import 'package:libgit2dart/src/bindings/revwalk.dart' as bindings;
class RevWalk { class RevWalk {
/// Initializes a new instance of the [RevWalk] class. /// Initializes a new instance of the [RevWalk] class.

View file

@ -1,9 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/signature.dart' as bindings; import 'package:libgit2dart/src/bindings/signature.dart' as bindings;
import 'util.dart'; import 'package:libgit2dart/src/util.dart';
class Signature { class Signature {
/// Initializes a new instance of [Signature] class from provided pointer to /// Initializes a new instance of [Signature] class from provided pointer to
@ -39,18 +39,19 @@ class Signature {
} }
} }
late final Pointer<git_signature> _signaturePointer;
/// Pointer to memory address for allocated signature object.
Pointer<git_signature> get pointer => _signaturePointer;
/// Creates a new action signature with default user and now timestamp. /// Creates a new action signature with default user and now timestamp.
/// ///
/// This looks up the user.name and user.email from the configuration and /// This looks up the user.name and user.email from the configuration and
/// uses the current time as the timestamp, and creates a new signature based /// uses the current time as the timestamp, and creates a new signature based
/// on that information. /// on that information.
static Signature defaultSignature(Repository repo) => Signature.defaultSignature(Repository repo) {
Signature(bindings.defaultSignature(repo.pointer)); _signaturePointer = bindings.defaultSignature(repo.pointer);
}
late final Pointer<git_signature> _signaturePointer;
/// Pointer to memory address for allocated signature object.
Pointer<git_signature> get pointer => _signaturePointer;
/// Full name of the author. /// Full name of the author.
String get name => _signaturePointer.ref.name.cast<Utf8>().toDartString(); String get name => _signaturePointer.ref.name.cast<Utf8>().toDartString();
@ -65,7 +66,7 @@ class Signature {
int get offset => _signaturePointer.ref.when.offset; int get offset => _signaturePointer.ref.when.offset;
@override @override
bool operator ==(other) { bool operator ==(Object other) {
return (other is Signature) && return (other is Signature) &&
(name == other.name) && (name == other.name) &&
(email == other.email) && (email == other.email) &&

View file

@ -1,5 +1,5 @@
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/stash.dart' as bindings; import 'package:libgit2dart/src/bindings/stash.dart' as bindings;
class Stash { class Stash {
/// Initializes a new instance of [Stash] class from provided stash [index], /// Initializes a new instance of [Stash] class from provided stash [index],
@ -42,12 +42,14 @@ class Stash {
}) { }) {
final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); final int flagsInt = flags.fold(0, (acc, e) => acc | e.value);
return Oid(bindings.save( return Oid(
repoPointer: repo.pointer, bindings.save(
stasherPointer: stasher.pointer, repoPointer: repo.pointer,
message: message, stasherPointer: stasher.pointer,
flags: flagsInt, message: message,
)); flags: flagsInt,
),
);
} }
/// Applies a single stashed state from the stash list. /// Applies a single stashed state from the stash list.

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/submodule.dart' as bindings; import 'package:libgit2dart/src/bindings/submodule.dart' as bindings;
class Submodule { class Submodule {
/// Lookups submodule information by [name] or path (they are usually the /// Lookups submodule information by [name] or path (they are usually the

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/object.dart' as object_bindings;
import 'bindings/object.dart' as object_bindings; import 'package:libgit2dart/src/bindings/tag.dart' as bindings;
import 'bindings/tag.dart' as bindings;
class Tag { class Tag {
/// Initializes a new instance of [Tag] class from provided pointer to /// Initializes a new instance of [Tag] class from provided pointer to

View file

@ -1,10 +1,9 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'package:libgit2dart/src/bindings/diff.dart' as diff_bindings;
import 'bindings/diff.dart' as diff_bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/tree.dart' as bindings;
import 'bindings/tree.dart' as bindings;
class Tree { class Tree {
/// Initializes a new instance of [Tree] class from provided pointer to /// Initializes a new instance of [Tree] class from provided pointer to
@ -31,12 +30,16 @@ class Tree {
/// List with tree entries of a tree. /// List with tree entries of a tree.
List<TreeEntry> get entries { List<TreeEntry> get entries {
final entryCount = bindings.entryCount(_treePointer); final entryCount = bindings.entryCount(_treePointer);
var result = <TreeEntry>[]; final result = <TreeEntry>[];
for (var i = 0; i < entryCount; i++) { for (var i = 0; i < entryCount; i++) {
result.add(TreeEntry(bindings.getByIndex( result.add(
treePointer: _treePointer, TreeEntry(
index: i, bindings.getByIndex(
))); treePointer: _treePointer,
index: i,
),
),
);
} }
return result; return result;
@ -54,23 +57,30 @@ class Tree {
/// Throws [ArgumentError] if provided [value] is not int or string. /// Throws [ArgumentError] if provided [value] is not int or string.
TreeEntry operator [](Object value) { TreeEntry operator [](Object value) {
if (value is int) { if (value is int) {
return TreeEntry(bindings.getByIndex( return TreeEntry(
treePointer: _treePointer, bindings.getByIndex(
index: value, treePointer: _treePointer,
)); index: value,
),
);
} else if (value is String && value.contains('/')) { } else if (value is String && value.contains('/')) {
return TreeEntry(bindings.getByPath( return TreeEntry(
rootPointer: _treePointer, bindings.getByPath(
path: value, rootPointer: _treePointer,
)); path: value,
),
);
} else if (value is String) { } else if (value is String) {
return TreeEntry(bindings.getByName( return TreeEntry(
treePointer: _treePointer, bindings.getByName(
filename: value, treePointer: _treePointer,
)); filename: value,
),
);
} else { } else {
throw ArgumentError.value( throw ArgumentError.value(
'$value should be either index position, filename or path'); '$value should be either index position, filename or path',
);
} }
} }
@ -96,13 +106,15 @@ class Tree {
int contextLines = 3, int contextLines = 3,
int interhunkLines = 0, int interhunkLines = 0,
}) { }) {
return Diff(diff_bindings.treeToWorkdir( return Diff(
repoPointer: bindings.owner(_treePointer), diff_bindings.treeToWorkdir(
treePointer: _treePointer, repoPointer: bindings.owner(_treePointer),
flags: flags.fold(0, (acc, e) => acc | e.value), treePointer: _treePointer,
contextLines: contextLines, flags: flags.fold(0, (acc, e) => acc | e.value),
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} }
/// Creates a diff between a tree and repository index. /// Creates a diff between a tree and repository index.
@ -122,14 +134,16 @@ class Tree {
int contextLines = 3, int contextLines = 3,
int interhunkLines = 0, int interhunkLines = 0,
}) { }) {
return Diff(diff_bindings.treeToIndex( return Diff(
repoPointer: bindings.owner(_treePointer), diff_bindings.treeToIndex(
treePointer: _treePointer, repoPointer: bindings.owner(_treePointer),
indexPointer: index.pointer, treePointer: _treePointer,
flags: flags.fold(0, (acc, e) => acc | e.value), indexPointer: index.pointer,
contextLines: contextLines, flags: flags.fold(0, (acc, e) => acc | e.value),
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} }
/// Creates a diff with the difference between two tree objects. /// Creates a diff with the difference between two tree objects.
@ -151,14 +165,16 @@ class Tree {
int contextLines = 3, int contextLines = 3,
int interhunkLines = 0, int interhunkLines = 0,
}) { }) {
return Diff(diff_bindings.treeToTree( return Diff(
repoPointer: bindings.owner(_treePointer), diff_bindings.treeToTree(
oldTreePointer: _treePointer, repoPointer: bindings.owner(_treePointer),
newTreePointer: tree.pointer, oldTreePointer: _treePointer,
flags: flags.fold(0, (acc, e) => acc | e.value), newTreePointer: tree.pointer,
contextLines: contextLines, flags: flags.fold(0, (acc, e) => acc | e.value),
interhunkLines: interhunkLines, contextLines: contextLines,
)); interhunkLines: interhunkLines,
),
);
} }
/// Releases memory allocated for tree object. /// Releases memory allocated for tree object.

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/treebuilder.dart' as bindings; import 'package:libgit2dart/src/bindings/treebuilder.dart' as bindings;
class TreeBuilder { class TreeBuilder {
/// Initializes a new instance of [TreeBuilder] class from provided /// Initializes a new instance of [TreeBuilder] class from provided
@ -36,10 +36,12 @@ class TreeBuilder {
/// ///
/// Throws [ArgumentError] if nothing found for provided [filename]. /// Throws [ArgumentError] if nothing found for provided [filename].
TreeEntry operator [](String filename) { TreeEntry operator [](String filename) {
return TreeEntry(bindings.getByFilename( return TreeEntry(
builderPointer: _treeBuilderPointer, bindings.getByFilename(
filename: filename, builderPointer: _treeBuilderPointer,
)); filename: filename,
),
);
} }
/// Adds or updates an entry to the tree builder with the given attributes. /// Adds or updates an entry to the tree builder with the given attributes.

View file

@ -3,12 +3,13 @@
import 'dart:ffi'; import 'dart:ffi';
import 'dart:io'; import 'dart:io';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
DynamicLibrary loadLibrary() { DynamicLibrary loadLibrary() {
if (Platform.isLinux || Platform.isAndroid || Platform.isFuchsia) { if (Platform.isLinux || Platform.isAndroid || Platform.isFuchsia) {
return DynamicLibrary.open( return DynamicLibrary.open(
'${Directory.current.path}/libgit2/libgit2.so.1.3.0'); '${Directory.current.path}/libgit2/libgit2.so.1.3.0',
);
} }
// if (Platform.isMacOS) { // if (Platform.isMacOS) {
// return DynamicLibrary.open( // return DynamicLibrary.open(

View file

@ -1,7 +1,7 @@
import 'dart:ffi'; import 'dart:ffi';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
import 'bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart';
import 'bindings/worktree.dart' as bindings; import 'package:libgit2dart/src/bindings/worktree.dart' as bindings;
class Worktree { class Worktree {
/// Creates new worktree. /// Creates new worktree.

View file

@ -8,10 +8,10 @@ environment:
dependencies: dependencies:
dev_dependencies: dev_dependencies:
lints: ^1.0.1
ffigen: ^4.0.0 ffigen: ^4.0.0
test: ^1.17.5 lints: ^1.0.1
path: ^1.8.0 path: ^1.8.0
test: ^1.17.5
ffigen: ffigen:
output: "lib/src/bindings/libgit2_bindings.dart" output: "lib/src/bindings/libgit2_bindings.dart"

View file

@ -118,7 +118,7 @@ void main() {
expect(config['core.bare'].value, 'false'); expect(config['core.bare'].value, 'false');
}); });
test('throws when variable isn\'t found', () { test("throws when variable isn't found", () {
expect( expect(
() => config['not.there'], () => config['not.there'],
throwsA( throwsA(
@ -192,7 +192,7 @@ void main() {
expect( expect(
config.multivar( config.multivar(
variable: 'core.gitproxy', variable: 'core.gitproxy',
regexp: 'for kernel.org\$', regexp: r'for kernel.org$',
), ),
['proxy-command for kernel.org'], ['proxy-command for kernel.org'],
); );
@ -234,20 +234,20 @@ void main() {
expect( expect(
config.multivar( config.multivar(
variable: 'core.gitproxy', variable: 'core.gitproxy',
regexp: 'for kernel.org\$', regexp: r'for kernel.org$',
), ),
['proxy-command for kernel.org'], ['proxy-command for kernel.org'],
); );
config.deleteMultivar( config.deleteMultivar(
variable: 'core.gitproxy', variable: 'core.gitproxy',
regexp: 'for kernel.org\$', regexp: r'for kernel.org$',
); );
expect( expect(
config.multivar( config.multivar(
variable: 'core.gitproxy', variable: 'core.gitproxy',
regexp: 'for kernel.org\$', regexp: r'for kernel.org$',
), ),
<String>[], <String>[],
); );

View file

@ -217,7 +217,7 @@ index e69de29..c217c63 100644
test('throws when trying to diff between null and tree', () { test('throws when trying to diff between null and tree', () {
final tree = repo.lookupTree(repo['b85d53c']); final tree = repo.lookupTree(repo['b85d53c']);
expect( expect(
() => repo.diff(a: null, b: tree), () => repo.diff(b: tree),
throwsA( throwsA(
isA<ArgumentError>().having( isA<ArgumentError>().having(
(e) => e.message, (e) => e.message,

View file

@ -172,7 +172,9 @@ void main() {
test('returns string representation of object', () { test('returns string representation of object', () {
expect( expect(
GitMergeFileFlag.defaults.toString(), 'GitMergeFileFlag.defaults'); GitMergeFileFlag.defaults.toString(),
'GitMergeFileFlag.defaults',
);
}); });
}); });
@ -413,7 +415,9 @@ void main() {
test('returns string representation of object', () { test('returns string representation of object', () {
expect( expect(
GitFetchPrune.unspecified.toString(), 'GitFetchPrune.unspecified'); GitFetchPrune.unspecified.toString(),
'GitFetchPrune.unspecified',
);
}); });
}); });
@ -552,7 +556,9 @@ void main() {
test('returns string representation of object', () { test('returns string representation of object', () {
expect( expect(
GitSubmoduleStatus.inHead.toString(), 'GitSubmoduleStatus.inHead'); GitSubmoduleStatus.inHead.toString(),
'GitSubmoduleStatus.inHead',
);
}); });
}); });
}); });

View file

@ -89,7 +89,7 @@ void main() {
odb.free(); odb.free();
}); });
test('returns list of all objects oid\'s in database', () { test("returns list of all objects oid's in database", () {
final odb = repo.odb; final odb = repo.odb;
expect(odb.objects, isNot(isEmpty)); expect(odb.objects, isNot(isEmpty));

View file

@ -70,7 +70,7 @@ void main() {
}); });
test('prune() successfully prunes branches', () { test('prune() successfully prunes branches', () {
var pruned = <String>[]; final pruned = <String>[];
void updateTips(String refname, Oid oldOid, Oid newOid) { void updateTips(String refname, Oid oldOid, Oid newOid) {
pruned.add(refname); pruned.add(refname);
} }

View file

@ -315,7 +315,7 @@ void main() {
); );
}); });
test('successfully returns remote repo\'s reference list', () { test("successfully returns remote repo's reference list", () {
Remote.setUrl( Remote.setUrl(
repo: repo, repo: repo,
remote: 'libgit2', remote: 'libgit2',
@ -329,7 +329,7 @@ void main() {
expect(refs.first['name'], 'HEAD'); expect(refs.first['name'], 'HEAD');
expect(refs.first['symref'], 'refs/heads/master'); expect(refs.first['symref'], 'refs/heads/master');
expect( expect(
(refs.first['oid'] as Oid).sha, (refs.first['oid']! as Oid).sha,
'49322bb17d3acc9146f98c97d078513228bbf3c0', '49322bb17d3acc9146f98c97d078513228bbf3c0',
); );
@ -337,8 +337,8 @@ void main() {
}); });
test( test(
'throws when trying to get remote repo\'s reference list with ' "throws when trying to get remote repo's reference list with "
'invalid url', () { "invalid url", () {
Remote.setUrl(repo: repo, remote: 'libgit2', url: 'invalid'); Remote.setUrl(repo: repo, remote: 'libgit2', url: 'invalid');
final remote = repo.lookupRemote('libgit2'); final remote = repo.lookupRemote('libgit2');
@ -504,7 +504,7 @@ Total 69 (delta 0), reused 1 (delta 0), pack-reused 68
); );
final remote = repo.lookupRemote('libgit2'); final remote = repo.lookupRemote('libgit2');
var sidebandOutput = StringBuffer(); final sidebandOutput = StringBuffer();
void sideband(String message) { void sideband(String message) {
sidebandOutput.write(message); sidebandOutput.write(message);
} }
@ -542,7 +542,7 @@ Total 69 (delta 0), reused 1 (delta 0), pack-reused 68
}, },
]; ];
var updateTipsOutput = <Map<String, String>>[]; final updateTipsOutput = <Map<String, String>>[];
void updateTips(String refname, Oid oldOid, Oid newOid) { void updateTips(String refname, Oid oldOid, Oid newOid) {
updateTipsOutput.add({ updateTipsOutput.add({
'refname': refname, 'refname': refname,
@ -576,7 +576,7 @@ Total 69 (delta 0), reused 1 (delta 0), pack-reused 68
repo.createRemote(name: 'local', url: originDir.path); repo.createRemote(name: 'local', url: originDir.path);
final remote = repo.lookupRemote('local'); final remote = repo.lookupRemote('local');
var updateRefOutput = <String, String>{}; final updateRefOutput = <String, String>{};
void updateRef(String refname, String message) { void updateRef(String refname, String message) {
updateRefOutput[refname] = message; updateRefOutput[refname] = message;
} }

View file

@ -1,3 +1,5 @@
// ignore_for_file: avoid_positional_boolean_parameters
import 'dart:io'; import 'dart:io';
import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/libgit2dart.dart';
@ -101,13 +103,13 @@ void main() {
}); });
test('successfully clones repository with provided repository callback', test('successfully clones repository with provided repository callback',
() async { () {
final callbackPath = final callbackPath =
Directory('${Directory.systemTemp.path}/callbackRepo'); Directory('${Directory.systemTemp.path}/callbackRepo');
if (await callbackPath.exists()) { if (callbackPath.existsSync()) {
callbackPath.delete(recursive: true); callbackPath.deleteSync(recursive: true);
} }
callbackPath.create(); callbackPath.createSync();
Repository repository(String path, bool bare) => Repository repository(String path, bool bare) =>
Repository.init(path: callbackPath.path); Repository.init(path: callbackPath.path);
@ -123,7 +125,7 @@ void main() {
expect(clonedRepo.path, '${callbackPath.path}/.git/'); expect(clonedRepo.path, '${callbackPath.path}/.git/');
clonedRepo.free(); clonedRepo.free();
callbackPath.delete(recursive: true); callbackPath.deleteSync(recursive: true);
}); });
test('throws when cloning repository with invalid repository callback', () { test('throws when cloning repository with invalid repository callback', () {

View file

@ -8,7 +8,7 @@ void main() {
late Repository repo; late Repository repo;
group('Repository.open', () { group('Repository.open', () {
test('throws when repository isn\'t found at provided path', () { test("throws when repository isn't found at provided path", () {
expect( expect(
() => Repository.open(''), () => Repository.open(''),
throwsA(isA<LibGit2Error>()), throwsA(isA<LibGit2Error>()),
@ -71,7 +71,7 @@ void main() {
); );
}); });
test('returns path to parent repo\'s .git folder for the repository', () { test("returns path to parent repo's .git folder for the repository", () {
expect( expect(
repo.commonDir, repo.commonDir,
'${Directory.current.path}/test/assets/empty_standard/.gitdir/', '${Directory.current.path}/test/assets/empty_standard/.gitdir/',

View file

@ -13,7 +13,6 @@ void main() {
name: name, name: name,
email: email, email: email,
time: time, time: time,
offset: offset,
); );
}); });
@ -80,7 +79,6 @@ void main() {
name: name, name: name,
email: email, email: email,
time: time, time: time,
offset: offset,
); );
expect(signature == otherSignature, true); expect(signature == otherSignature, true);