mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
refactor: pass repository object to arguments instead of pointer
This commit is contained in:
parent
94b4116adf
commit
e0e3742457
6 changed files with 45 additions and 26 deletions
|
@ -18,13 +18,13 @@ class Commit {
|
||||||
libgit2.git_libgit2_init();
|
libgit2.git_libgit2_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes a new instance of [Commit] class from provided pointer to [Repository]
|
/// Initializes a new instance of [Commit] class from provided [Repository]
|
||||||
/// object in memory and pointer to [Oid] object in memory.
|
/// and [Oid] objects.
|
||||||
///
|
///
|
||||||
/// Should be freed with `free()` to release allocated memory.
|
/// Should be freed with `free()` to release allocated memory.
|
||||||
Commit.lookup(Pointer<git_repository> repo, Pointer<git_oid> oid) {
|
Commit.lookup(Repository repo, Oid oid) {
|
||||||
libgit2.git_libgit2_init();
|
libgit2.git_libgit2_init();
|
||||||
_commitPointer = bindings.lookup(repo, oid);
|
_commitPointer = bindings.lookup(repo.pointer, oid.pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pointer to memory address for allocated commit object.
|
/// Pointer to memory address for allocated commit object.
|
||||||
|
|
|
@ -96,13 +96,14 @@ class Index {
|
||||||
late final Oid oid;
|
late final Oid oid;
|
||||||
late final Tree tree;
|
late final Tree tree;
|
||||||
if (target is Oid) {
|
if (target is Oid) {
|
||||||
tree = Tree.lookup(bindings.owner(_indexPointer), target.pointer);
|
final repo = Repository(bindings.owner(_indexPointer));
|
||||||
|
tree = Tree.lookup(repo, target);
|
||||||
} else if (target is Tree) {
|
} else if (target is Tree) {
|
||||||
tree = target;
|
tree = target;
|
||||||
} else if (isValidShaHex(target as String)) {
|
} else if (isValidShaHex(target as String)) {
|
||||||
final repo = Repository(bindings.owner(_indexPointer));
|
final repo = Repository(bindings.owner(_indexPointer));
|
||||||
oid = Oid.fromSHA(repo, target);
|
oid = Oid.fromSHA(repo, target);
|
||||||
tree = Tree.lookup(repo.pointer, oid.pointer);
|
tree = Tree.lookup(repo, oid);
|
||||||
} else {
|
} else {
|
||||||
throw ArgumentError.value(
|
throw ArgumentError.value(
|
||||||
'$target should be either Oid object, SHA hex string or Tree object');
|
'$target should be either Oid object, SHA hex string or Tree object');
|
||||||
|
|
|
@ -9,10 +9,13 @@ import 'util.dart';
|
||||||
|
|
||||||
class References {
|
class References {
|
||||||
/// Initializes a new instance of the [References] class
|
/// Initializes a new instance of the [References] class
|
||||||
/// from provided pointer to repository object in memory.
|
/// from provided [Repository] object.
|
||||||
References(this._repoPointer);
|
References(Repository repo) {
|
||||||
|
_repoPointer = repo.pointer;
|
||||||
|
}
|
||||||
|
|
||||||
final Pointer<git_repository> _repoPointer;
|
/// Pointer to memory address for allocated repository object.
|
||||||
|
late final Pointer<git_repository> _repoPointer;
|
||||||
|
|
||||||
/// Returns a list of all the references that can be found in a repository.
|
/// Returns a list of all the references that can be found in a repository.
|
||||||
///
|
///
|
||||||
|
@ -58,14 +61,20 @@ class Reference {
|
||||||
/// The message for the reflog will be ignored if the reference does not belong in the
|
/// The message for the reflog will be ignored if the reference does not belong in the
|
||||||
/// standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
|
/// standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
|
||||||
Reference.createDirect({
|
Reference.createDirect({
|
||||||
required Pointer<git_repository> repo,
|
required Repository repo,
|
||||||
required String name,
|
required String name,
|
||||||
required Pointer<git_oid> oid,
|
required Pointer<git_oid> oid,
|
||||||
required bool force,
|
required bool force,
|
||||||
String? logMessage,
|
String? logMessage,
|
||||||
}) {
|
}) {
|
||||||
_repoPointer = repo;
|
_repoPointer = repo.pointer;
|
||||||
_refPointer = bindings.createDirect(repo, name, oid, force, logMessage);
|
_refPointer = bindings.createDirect(
|
||||||
|
repo.pointer,
|
||||||
|
name,
|
||||||
|
oid,
|
||||||
|
force,
|
||||||
|
logMessage,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes a new instance of the [Reference] class by creating a new symbolic reference.
|
/// Initializes a new instance of the [Reference] class by creating a new symbolic reference.
|
||||||
|
@ -91,20 +100,26 @@ class Reference {
|
||||||
/// The message for the reflog will be ignored if the reference does not belong in the standard
|
/// The message for the reflog will be ignored if the reference does not belong in the standard
|
||||||
/// set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
|
/// set (HEAD, branches and remote-tracking branches) and it does not have a reflog.
|
||||||
Reference.createSymbolic({
|
Reference.createSymbolic({
|
||||||
required Pointer<git_repository> repo,
|
required Repository repo,
|
||||||
required String name,
|
required String name,
|
||||||
required String target,
|
required String target,
|
||||||
required bool force,
|
required bool force,
|
||||||
String? logMessage,
|
String? logMessage,
|
||||||
}) {
|
}) {
|
||||||
_repoPointer = repo;
|
_repoPointer = repo.pointer;
|
||||||
_refPointer =
|
_refPointer = bindings.createSymbolic(
|
||||||
bindings.createSymbolic(repo, name, target, force, logMessage);
|
repo.pointer,
|
||||||
|
name,
|
||||||
|
target,
|
||||||
|
force,
|
||||||
|
logMessage,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pointer to memory address for allocated reference object.
|
/// Pointer to memory address for allocated reference object.
|
||||||
late Pointer<git_reference> _refPointer;
|
late Pointer<git_reference> _refPointer;
|
||||||
|
|
||||||
|
/// Pointer to memory address for allocated repository object.
|
||||||
late final Pointer<git_repository> _repoPointer;
|
late final Pointer<git_repository> _repoPointer;
|
||||||
|
|
||||||
/// Returns the type of the reference.
|
/// Returns the type of the reference.
|
||||||
|
@ -138,7 +153,7 @@ class Reference {
|
||||||
late final Oid oid;
|
late final Oid oid;
|
||||||
|
|
||||||
if (isValidShaHex(target)) {
|
if (isValidShaHex(target)) {
|
||||||
final repo = Repository(bindings.owner(_refPointer));
|
final repo = Repository(_repoPointer);
|
||||||
oid = Oid.fromSHA(repo, target);
|
oid = Oid.fromSHA(repo, target);
|
||||||
} else {
|
} else {
|
||||||
final ref = Reference(
|
final ref = Reference(
|
||||||
|
@ -205,7 +220,7 @@ class Reference {
|
||||||
bool get isTag => bindings.isTag(_refPointer);
|
bool get isTag => bindings.isTag(_refPointer);
|
||||||
|
|
||||||
/// Returns the repository where a reference resides.
|
/// Returns the repository where a reference resides.
|
||||||
Pointer<git_repository> get owner => bindings.owner(_refPointer);
|
Repository get owner => Repository(bindings.owner(_refPointer));
|
||||||
|
|
||||||
/// Delete an existing reference.
|
/// Delete an existing reference.
|
||||||
///
|
///
|
||||||
|
|
|
@ -14,7 +14,7 @@ class RefLog {
|
||||||
|
|
||||||
final repo = ref.owner;
|
final repo = ref.owner;
|
||||||
final name = ref.name;
|
final name = ref.name;
|
||||||
_reflogPointer = bindings.read(repo, name);
|
_reflogPointer = bindings.read(repo.pointer, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Pointer to memory address for allocated reflog object.
|
/// Pointer to memory address for allocated reflog object.
|
||||||
|
|
|
@ -238,7 +238,7 @@ class Repository {
|
||||||
Reference get head => Reference(_repoPointer, bindings.head(_repoPointer));
|
Reference get head => Reference(_repoPointer, bindings.head(_repoPointer));
|
||||||
|
|
||||||
/// Returns [References] object.
|
/// Returns [References] object.
|
||||||
References get references => References(_repoPointer);
|
References get references => References(this);
|
||||||
|
|
||||||
/// Creates a new reference.
|
/// Creates a new reference.
|
||||||
///
|
///
|
||||||
|
@ -278,7 +278,7 @@ class Repository {
|
||||||
|
|
||||||
if (isDirect) {
|
if (isDirect) {
|
||||||
return Reference.createDirect(
|
return Reference.createDirect(
|
||||||
repo: _repoPointer,
|
repo: this,
|
||||||
name: name,
|
name: name,
|
||||||
oid: oid.pointer,
|
oid: oid.pointer,
|
||||||
force: force,
|
force: force,
|
||||||
|
@ -286,7 +286,7 @@ class Repository {
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return Reference.createSymbolic(
|
return Reference.createSymbolic(
|
||||||
repo: _repoPointer,
|
repo: this,
|
||||||
name: name,
|
name: name,
|
||||||
target: target as String,
|
target: target as String,
|
||||||
force: force,
|
force: force,
|
||||||
|
@ -318,6 +318,6 @@ class Repository {
|
||||||
} else {
|
} else {
|
||||||
throw ArgumentError.value('$sha is not a valid sha hex string');
|
throw ArgumentError.value('$sha is not a valid sha hex string');
|
||||||
}
|
}
|
||||||
return Commit.lookup(_repoPointer, oid.pointer);
|
return Commit.lookup(this, oid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
|
import 'package:libgit2dart/src/repository.dart';
|
||||||
|
|
||||||
import 'bindings/libgit2_bindings.dart';
|
import 'bindings/libgit2_bindings.dart';
|
||||||
import 'bindings/tree.dart' as bindings;
|
import 'bindings/tree.dart' as bindings;
|
||||||
|
import 'oid.dart';
|
||||||
import 'util.dart';
|
import 'util.dart';
|
||||||
|
|
||||||
class Tree {
|
class Tree {
|
||||||
|
@ -11,12 +14,12 @@ class Tree {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes a new instance of [Tree] class from provided
|
/// Initializes a new instance of [Tree] class from provided
|
||||||
/// pointers to repository object and oid object in memory.
|
/// [Repository] and [Oid] objects.
|
||||||
///
|
///
|
||||||
/// Should be freed with `free()` to release allocated memory.
|
/// Should be freed with `free()` to release allocated memory.
|
||||||
Tree.lookup(Pointer<git_repository> repo, Pointer<git_oid> id) {
|
Tree.lookup(Repository repo, Oid id) {
|
||||||
libgit2.git_libgit2_init();
|
libgit2.git_libgit2_init();
|
||||||
_treePointer = bindings.lookup(repo, id);
|
_treePointer = bindings.lookup(repo.pointer, id.pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
late final Pointer<git_tree> _treePointer;
|
late final Pointer<git_tree> _treePointer;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue