From ae2aef5e2e60c6e14e384c80029f2b87ac8b5450 Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Wed, 25 May 2022 12:16:40 +0300 Subject: [PATCH 1/2] refactor: use loops inside list literals (#60) --- lib/src/bindings/remote.dart | 38 ++++++++++++++++++-------------- lib/src/bindings/repository.dart | 1 - lib/src/bindings/worktree.dart | 10 +++++---- lib/src/commit.dart | 15 ++++--------- lib/src/diff.dart | 24 ++++++-------------- lib/src/patch.dart | 8 +++---- lib/src/rebase.dart | 17 +++++--------- lib/src/reference.dart | 11 +++------ lib/src/remote.dart | 12 ++++------ lib/src/revparse.dart | 8 +++---- lib/src/stash.dart | 4 +--- lib/src/tag.dart | 6 +---- lib/src/tree.dart | 17 ++++---------- 13 files changed, 65 insertions(+), 106 deletions(-) diff --git a/lib/src/bindings/remote.dart b/lib/src/bindings/remote.dart index e592d49..3305c7e 100644 --- a/lib/src/bindings/remote.dart +++ b/lib/src/bindings/remote.dart @@ -13,10 +13,10 @@ List list(Pointer repo) { final out = calloc(); libgit2.git_remote_list(out, repo); - final result = []; - for (var i = 0; i < out.ref.count; i++) { - result.add(out.ref.strings[i].cast().toDartString()); - } + final result = [ + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() + ]; calloc.free(out); @@ -162,11 +162,13 @@ List rename({ calloc.free(out); throw LibGit2Error(libgit2.git_error_last()); } else { - final result = []; - for (var i = 0; i < out.ref.count; i++) { - result.add(out.ref.strings[i].cast().toDartString()); - } + final result = [ + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() + ]; + calloc.free(out); + return result; } } @@ -253,11 +255,13 @@ List fetchRefspecs(Pointer remote) { final out = calloc(); libgit2.git_remote_get_fetch_refspecs(out, remote); - final result = []; - for (var i = 0; i < out.ref.count; i++) { - result.add(out.ref.strings[i].cast().toDartString()); - } + final result = [ + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() + ]; + calloc.free(out); + return result; } @@ -266,11 +270,13 @@ List pushRefspecs(Pointer remote) { final out = calloc(); libgit2.git_remote_get_push_refspecs(out, remote); - final result = []; - for (var i = 0; i < out.ref.count; i++) { - result.add(out.ref.strings[i].cast().toDartString()); - } + final result = [ + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() + ]; + calloc.free(out); + return result; } diff --git a/lib/src/bindings/repository.dart b/lib/src/bindings/repository.dart index f929af1..44a8745 100644 --- a/lib/src/bindings/repository.dart +++ b/lib/src/bindings/repository.dart @@ -124,7 +124,6 @@ Pointer clone({ required String localPath, required bool bare, RemoteCallback? remoteCallback, - // Repository Function(String, bool)? repository, RepositoryCallback? repositoryCallback, String? checkoutBranch, required Callbacks callbacks, diff --git a/lib/src/bindings/worktree.dart b/lib/src/bindings/worktree.dart index ddfeee0..2daa0ae 100644 --- a/lib/src/bindings/worktree.dart +++ b/lib/src/bindings/worktree.dart @@ -110,11 +110,13 @@ List list(Pointer repo) { calloc.free(out); throw LibGit2Error(libgit2.git_error_last()); } else { - final result = []; - for (var i = 0; i < out.ref.count; i++) { - result.add(out.ref.strings[i].cast().toDartString()); - } + final result = [ + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() + ]; + calloc.free(out); + return result; } } diff --git a/lib/src/commit.dart b/lib/src/commit.dart index 6bedac2..9fbb59e 100644 --- a/lib/src/commit.dart +++ b/lib/src/commit.dart @@ -264,18 +264,11 @@ class Commit extends Equatable { /// List of parent commits [Oid]s. List get parents { - final parents = []; final parentCount = bindings.parentCount(_commitPointer); - - for (var i = 0; i < parentCount; i++) { - final parentOid = bindings.parentId( - commitPointer: _commitPointer, - position: i, - ); - parents.add(Oid(parentOid)); - } - - return parents; + return [ + for (var i = 0; i < parentCount; i++) + Oid(bindings.parentId(commitPointer: _commitPointer, position: i)) + ]; } /// Returns the specified parent of the commit at provided 0-based [position]. diff --git a/lib/src/diff.dart b/lib/src/diff.dart index 6480172..d8c6c9e 100644 --- a/lib/src/diff.dart +++ b/lib/src/diff.dart @@ -285,28 +285,18 @@ class Diff extends Equatable { /// revisions. List get deltas { final length = bindings.length(_diffPointer); - final deltas = []; - for (var i = 0; i < length; i++) { - deltas.add( - DiffDelta( - bindings.getDeltaByIndex( - diffPointer: _diffPointer, - index: i, - ), - ), - ); - } - return deltas; + return [ + for (var i = 0; i < length; i++) + DiffDelta(bindings.getDeltaByIndex(diffPointer: _diffPointer, index: i)) + ]; } /// A List of [Patch]es. List get patches { final length = bindings.length(_diffPointer); - final patches = []; - for (var i = 0; i < length; i++) { - patches.add(Patch.fromDiff(diff: this, index: i)); - } - return patches; + return [ + for (var i = 0; i < length; i++) Patch.fromDiff(diff: this, index: i) + ]; } /// The patch diff text. diff --git a/lib/src/patch.dart b/lib/src/patch.dart index 36fd51f..16e5b25 100644 --- a/lib/src/patch.dart +++ b/lib/src/patch.dart @@ -237,10 +237,10 @@ class Patch extends Equatable { ); } - final intHeader = []; - for (var i = 0; i < hunkPointer.ref.header_len; i++) { - intHeader.add(hunkPointer.ref.header[i]); - } + final intHeader = [ + for (var i = 0; i < hunkPointer.ref.header_len; i++) + hunkPointer.ref.header[i] + ]; hunks.add( DiffHunk._( diff --git a/lib/src/rebase.dart b/lib/src/rebase.dart index f3def74..735e517 100644 --- a/lib/src/rebase.dart +++ b/lib/src/rebase.dart @@ -47,18 +47,13 @@ class Rebase { /// List of operations that are to be applied. List get operations { - final result = []; final operationsCount = bindings.operationsCount(_rebasePointer); - - for (var i = 0; i < operationsCount; i++) { - final operation = bindings.getOperationByIndex( - rebase: _rebasePointer, - index: i, - ); - result.add(RebaseOperation._(operation)); - } - - return result; + return [ + for (var i = 0; i < operationsCount; i++) + RebaseOperation._( + bindings.getOperationByIndex(rebase: _rebasePointer, index: i), + ) + ]; } /// Index of the rebase operation that is currently being applied. If the diff --git a/lib/src/reference.dart b/lib/src/reference.dart index 0a06c01..1f45270 100644 --- a/lib/src/reference.dart +++ b/lib/src/reference.dart @@ -203,14 +203,9 @@ class Reference extends Equatable { /// /// Throws an [Exception] if error occured. Oid get target { - late final Pointer oidPointer; - - if (type == ReferenceType.direct) { - oidPointer = bindings.target(_refPointer); - } else { - oidPointer = bindings.target(bindings.resolve(_refPointer)); - } - return Oid(oidPointer); + return type == ReferenceType.direct + ? Oid(bindings.target(_refPointer)) + : Oid(bindings.target(bindings.resolve(_refPointer))); } /// Recursively peel reference until object of the specified [type] is found. diff --git a/lib/src/remote.dart b/lib/src/remote.dart index 20659ba..9144861 100644 --- a/lib/src/remote.dart +++ b/lib/src/remote.dart @@ -211,20 +211,16 @@ class Remote extends Equatable { final refs = bindings.lsRemotes(_remotePointer); bindings.disconnect(_remotePointer); - final result = []; - for (final ref in refs) { - result.add( + return [ + for (final ref in refs) RemoteReference._( isLocal: ref['local']! as bool, localId: ref['loid'] as Oid?, name: ref['name']! as String, oid: ref['oid']! as Oid, symRef: ref['symref']! as String, - ), - ); - } - - return result; + ) + ]; } /// Downloads new data and updates tips. diff --git a/lib/src/revparse.dart b/lib/src/revparse.dart index 5df8a63..e413939 100644 --- a/lib/src/revparse.dart +++ b/lib/src/revparse.dart @@ -22,11 +22,9 @@ class RevParse { spec: spec, ); object = Commit(pointers[0].cast()); - if (pointers.length == 2) { - reference = Reference(pointers[1].cast()); - } else { - reference = null; - } + reference = pointers.length == 2 + ? Reference(pointers[1].cast()) + : null; } /// Object found by a revision string. diff --git a/lib/src/stash.dart b/lib/src/stash.dart index 27e22ab..85f5ff2 100644 --- a/lib/src/stash.dart +++ b/lib/src/stash.dart @@ -43,14 +43,12 @@ class Stash extends Equatable { String? message, Set flags = const {GitStash.defaults}, }) { - final flagsInt = flags.fold(0, (int acc, e) => acc | e.value); - return Oid( bindings.save( repoPointer: repo.pointer, stasherPointer: stasher.pointer, message: message, - flags: flagsInt, + flags: flags.fold(0, (int acc, e) => acc | e.value), ), ); } diff --git a/lib/src/tag.dart b/lib/src/tag.dart index ad6867b..8a9e26a 100644 --- a/lib/src/tag.dart +++ b/lib/src/tag.dart @@ -208,11 +208,7 @@ class Tag extends Equatable { /// Tagger (author) of a tag if there is one. Signature? get tagger { final sigPointer = bindings.tagger(_tagPointer); - if (sigPointer != nullptr) { - return Signature(sigPointer); - } else { - return null; - } + return sigPointer != nullptr ? Signature(sigPointer) : null; } /// Releases memory allocated for tag object. diff --git a/lib/src/tree.dart b/lib/src/tree.dart index 218bba5..5ab1a73 100644 --- a/lib/src/tree.dart +++ b/lib/src/tree.dart @@ -35,19 +35,10 @@ class Tree extends Equatable { /// List with tree entries of a tree. List get entries { final entryCount = bindings.entryCount(_treePointer); - final result = []; - for (var i = 0; i < entryCount; i++) { - result.add( - TreeEntry( - bindings.getByIndex( - treePointer: _treePointer, - index: i, - ), - ), - ); - } - - return result; + return [ + for (var i = 0; i < entryCount; i++) + TreeEntry(bindings.getByIndex(treePointer: _treePointer, index: i)) + ]; } /// Lookups a tree entry in the tree. From 4aea9a306a4f1f2f5d77eb799e412f2916c93112 Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Wed, 25 May 2022 13:22:15 +0300 Subject: [PATCH 2/2] chore: v1.1.0 --- CHANGELOG.md | 12 ++++++++++++ macos/libgit2dart.podspec | 2 +- pubspec.yaml | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef4ae72..4917c66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.1.0 + +- feat: add ability to get and set libgit2 global options + +- feat: upgrade Flutter version constraints to `>=3.0.0` + +- feat: add ability to remove entries in index with `resetDefault(...)` method + +- feat: add ability to compare objects (value based equality). + + Note: comparison of Repository objects have naive implementation. Comparison is based on repository path, and previously loaded into memory index, odb, etc. might be different. Use with caution. + ## 1.0.0 - Initial release. diff --git a/macos/libgit2dart.podspec b/macos/libgit2dart.podspec index b5c817b..2a2ab92 100644 --- a/macos/libgit2dart.podspec +++ b/macos/libgit2dart.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'libgit2dart' - s.version = '1.0.0' + s.version = '1.1.0' s.summary = 'Dart bindings to libgit2.' s.description = <<-DESC Dart bindings to libgit2. diff --git a/pubspec.yaml b/pubspec.yaml index e356446..f4591ed 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: libgit2dart description: Dart bindings to libgit2, provides ability to use libgit2 library in Dart and Flutter. -version: 1.0.0 +version: 1.1.0 homepage: https://github.com/SkinnyMind/libgit2dart