diff --git a/lib/src/bindings/annotated.dart b/lib/src/bindings/annotated.dart index 74176af..bb885ab 100644 --- a/lib/src/bindings/annotated.dart +++ b/lib/src/bindings/annotated.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Creates an annotated commit from the given commit id. The returned @@ -77,7 +76,7 @@ Pointer fromRevSpec({ required String revspec, }) { final out = calloc>(); - final revspecC = revspec.toChar(); + final revspecC = revspec.toNativeUtf8().cast(); final error = libgit2.git_annotated_commit_from_revspec( out, repoPointer, @@ -107,8 +106,8 @@ Pointer fromFetchHead({ required Pointer oid, }) { final out = calloc>(); - final branchNameC = branchName.toChar(); - final remoteUrlC = remoteUrl.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); + final remoteUrlC = remoteUrl.toNativeUtf8().cast(); final error = libgit2.git_annotated_commit_from_fetchhead( out, repoPointer, @@ -137,7 +136,7 @@ Pointer oid(Pointer commit) => /// Get the refname that the given annotated commit refers to. String refName(Pointer commit) { final result = libgit2.git_annotated_commit_ref(commit); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Frees an annotated commit. diff --git a/lib/src/bindings/attr.dart b/lib/src/bindings/attr.dart index 1a40993..28a1a53 100644 --- a/lib/src/bindings/attr.dart +++ b/lib/src/bindings/attr.dart @@ -1,7 +1,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Look up the value of one git attribute for path. @@ -16,8 +15,8 @@ Object? getAttribute({ required String name, }) { final out = calloc>(); - final pathC = path.toChar(); - final nameC = name.toChar(); + final pathC = path.toNativeUtf8().cast(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_attr_get(out, repoPointer, flags, pathC, nameC); final result = out.value; @@ -38,7 +37,7 @@ Object? getAttribute({ return false; } if (attributeValue == git_attr_value_t.GIT_ATTR_VALUE_STRING) { - return result.toDartString(); + return result.cast().toDartString(); } return null; } diff --git a/lib/src/bindings/blame.dart b/lib/src/bindings/blame.dart index 7bdab62..85ad9c3 100644 --- a/lib/src/bindings/blame.dart +++ b/lib/src/bindings/blame.dart @@ -2,7 +2,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/oid.dart'; import 'package:libgit2dart/src/util.dart'; @@ -21,7 +20,7 @@ Pointer file({ int? maxLine, }) { final out = calloc>(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final options = calloc(); libgit2.git_blame_options_init(options, GIT_BLAME_OPTIONS_VERSION); @@ -78,7 +77,7 @@ Pointer buffer({ required String buffer, }) { final out = calloc>(); - final bufferC = buffer.toChar(); + final bufferC = buffer.toNativeUtf8().cast(); final error = libgit2.git_blame_buffer( out, reference, diff --git a/lib/src/bindings/blob.dart b/lib/src/bindings/blob.dart index 13ed1e5..191e1bf 100644 --- a/lib/src/bindings/blob.dart +++ b/lib/src/bindings/blob.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Lookup a blob object from a repository. The returned blob must be freed @@ -85,7 +84,7 @@ Pointer createFromWorkdir({ required String relativePath, }) { final out = calloc(); - final relativePathC = relativePath.toChar(); + final relativePathC = relativePath.toNativeUtf8().cast(); final error = libgit2.git_blob_create_from_workdir( out, repoPointer, @@ -111,7 +110,7 @@ Pointer createFromDisk({ required String path, }) { final out = calloc(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_blob_create_from_disk(out, repoPointer, pathC); calloc.free(pathC); @@ -151,7 +150,7 @@ String filterContent({ git_oid? attributesCommit, }) { final out = calloc(); - final asPathC = asPath.toChar(); + final asPathC = asPath.toNativeUtf8().cast(); final opts = calloc(); libgit2.git_blob_filter_options_init(opts, GIT_BLOB_FILTER_OPTIONS_VERSION); opts.ref.flags = flags; @@ -163,7 +162,7 @@ String filterContent({ late final String result; if (out.ref.ptr != nullptr) { - result = out.ref.ptr.toDartString(length: out.ref.size); + result = out.ref.ptr.cast().toDartString(length: out.ref.size); } libgit2.git_buf_dispose(out); diff --git a/lib/src/bindings/branch.dart b/lib/src/bindings/branch.dart index d1738c2..d5e90a8 100644 --- a/lib/src/bindings/branch.dart +++ b/lib/src/bindings/branch.dart @@ -5,7 +5,6 @@ import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/reference.dart' as reference_bindings; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Return a list of branches. The returned references must be freed with @@ -61,7 +60,7 @@ Pointer lookup({ required int branchType, }) { final out = calloc>(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final error = libgit2.git_branch_lookup( out, repoPointer, @@ -98,7 +97,7 @@ Pointer create({ required bool force, }) { final out = calloc>(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final forceC = force ? 1 : 0; final error = libgit2.git_branch_create( out, @@ -148,7 +147,7 @@ void rename({ required bool force, }) { final out = calloc>(); - final newBranchNameC = newBranchName.toChar(); + final newBranchNameC = newBranchName.toNativeUtf8().cast(); final forceC = force ? 1 : 0; final error = libgit2.git_branch_move( out, @@ -213,7 +212,7 @@ String name(Pointer ref) { if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); } else { - return result.toDartString(); + return result.cast().toDartString(); } } @@ -230,10 +229,10 @@ String remoteName({ required String branchName, }) { final out = calloc(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final error = libgit2.git_branch_remote_name(out, repoPointer, branchNameC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -282,7 +281,7 @@ void setUpstream({ required Pointer branchPointer, required String? branchName, }) { - final branchNameC = branchName?.toChar() ?? nullptr; + final branchNameC = branchName?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_branch_set_upstream(branchPointer, branchNameC); calloc.free(branchNameC); @@ -304,10 +303,10 @@ String upstreamName({ required String branchName, }) { final out = calloc(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final error = libgit2.git_branch_upstream_name(out, repoPointer, branchNameC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -331,14 +330,14 @@ String upstreamRemote({ required String branchName, }) { final out = calloc(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final error = libgit2.git_branch_upstream_remote( out, repoPointer, branchNameC, ); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -362,14 +361,14 @@ String upstreamMerge({ required String branchName, }) { final out = calloc(); - final branchNameC = branchName.toChar(); + final branchNameC = branchName.toNativeUtf8().cast(); final error = libgit2.git_branch_upstream_merge( out, repoPointer, branchNameC, ); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); diff --git a/lib/src/bindings/checkout.dart b/lib/src/bindings/checkout.dart index ec139be..cc883da 100644 --- a/lib/src/bindings/checkout.dart +++ b/lib/src/bindings/checkout.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Updates files in the index and the working tree to match the content of the @@ -128,13 +127,13 @@ List initOptions({ optsC.ref.checkout_strategy = strategy; if (directory != null) { - optsC.ref.target_directory = directory.toChar(); + optsC.ref.target_directory = directory.toNativeUtf8().cast(); } var pathPointers = >[]; Pointer> strArray = nullptr; if (paths != null) { - pathPointers = paths.map((e) => e.toChar()).toList(); + pathPointers = paths.map((e) => e.toNativeUtf8().cast()).toList(); strArray = calloc(paths.length); for (var i = 0; i < paths.length; i++) { strArray[i] = pathPointers[i]; diff --git a/lib/src/bindings/commit.dart b/lib/src/bindings/commit.dart index f4a97c6..4a6d5cd 100644 --- a/lib/src/bindings/commit.dart +++ b/lib/src/bindings/commit.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Lookup a commit object from a repository. The returned commit must be @@ -46,9 +45,10 @@ Pointer create({ required List> parents, }) { final out = calloc(); - final updateRefC = updateRef.toChar(); - final messageEncodingC = messageEncoding?.toChar() ?? nullptr; - final messageC = message.toChar(); + final updateRefC = updateRef.toNativeUtf8().cast(); + final messageEncodingC = + messageEncoding?.toNativeUtf8().cast() ?? nullptr; + final messageC = message.toNativeUtf8().cast(); final parentsC = calloc>(parentCount); if (parents.isNotEmpty) { @@ -103,9 +103,10 @@ String createBuffer({ required List> parents, }) { final out = calloc(); - final updateRefC = updateRef.toChar(); - final messageEncodingC = messageEncoding?.toChar() ?? nullptr; - final messageC = message.toChar(); + final updateRefC = updateRef.toNativeUtf8().cast(); + final messageEncodingC = + messageEncoding?.toNativeUtf8().cast() ?? nullptr; + final messageC = message.toNativeUtf8().cast(); final parentsC = calloc>(parentCount); if (parents.isNotEmpty) { @@ -128,7 +129,7 @@ String createBuffer({ parentsC, ); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -168,9 +169,10 @@ Pointer amend({ required Pointer? treePointer, }) { final out = calloc(); - final updateRefC = updateRef?.toChar() ?? nullptr; - final messageEncodingC = messageEncoding?.toChar() ?? nullptr; - final messageC = message?.toChar() ?? nullptr; + final updateRefC = updateRef?.toNativeUtf8().cast() ?? nullptr; + final messageEncodingC = + messageEncoding?.toNativeUtf8().cast() ?? nullptr; + final messageC = message?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_commit_amend( out, @@ -214,7 +216,7 @@ Pointer duplicate(Pointer source) { /// If the encoding header in the commit is missing UTF-8 is assumed. String messageEncoding(Pointer commit) { final result = libgit2.git_commit_message_encoding(commit); - return result == nullptr ? 'utf-8' : result.toDartString(); + return result == nullptr ? 'utf-8' : result.cast().toDartString(); } /// Get the full message of a commit. @@ -222,7 +224,7 @@ String messageEncoding(Pointer commit) { /// The returned message will be slightly prettified by removing any potential /// leading newlines. String message(Pointer commit) { - return libgit2.git_commit_message(commit).toDartString(); + return libgit2.git_commit_message(commit).cast().toDartString(); } /// Get the short "summary" of the git commit message. @@ -237,7 +239,7 @@ String summary(Pointer commit) { if (result == nullptr) { throw LibGit2Error(libgit2.git_error_last()); } else { - return result.toDartString(); + return result.cast().toDartString(); } } @@ -248,7 +250,7 @@ String summary(Pointer commit) { /// trimmed. String body(Pointer commit) { final result = libgit2.git_commit_body(commit); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Get an arbitrary header field. @@ -259,10 +261,10 @@ String headerField({ required String field, }) { final out = calloc(); - final fieldC = field.toChar(); + final fieldC = field.toNativeUtf8().cast(); final error = libgit2.git_commit_header_field(out, commitPointer, fieldC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); diff --git a/lib/src/bindings/config.dart b/lib/src/bindings/config.dart index 813cd4c..796e818 100644 --- a/lib/src/bindings/config.dart +++ b/lib/src/bindings/config.dart @@ -5,14 +5,13 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create a new config instance containing a single on-disk file. The returned /// config must be freed with [free]. Pointer open(String path) { final out = calloc>(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); libgit2.git_config_open_ondisk(out, pathC); calloc.free(pathC); @@ -60,7 +59,7 @@ String findGlobal() { final out = calloc(); final error = libgit2.git_config_find_global(out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -82,7 +81,7 @@ String findSystem() { final out = calloc(); final error = libgit2.git_config_find_system(out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -108,7 +107,7 @@ String findXdg() { final out = calloc(); final error = libgit2.git_config_find_xdg(out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -146,7 +145,7 @@ Pointer getEntry({ required String variable, }) { final out = calloc>(); - final nameC = variable.toChar(); + final nameC = variable.toNativeUtf8().cast(); final error = libgit2.git_config_get_entry(out, configPointer, nameC); final result = out.value; @@ -168,7 +167,7 @@ void setBool({ required String variable, required bool value, }) { - final nameC = variable.toChar(); + final nameC = variable.toNativeUtf8().cast(); final valueC = value ? 1 : 0; libgit2.git_config_set_bool(configPointer, nameC, valueC); calloc.free(nameC); @@ -181,7 +180,7 @@ void setInt({ required String variable, required int value, }) { - final nameC = variable.toChar(); + final nameC = variable.toNativeUtf8().cast(); libgit2.git_config_set_int64(configPointer, nameC, value); calloc.free(nameC); } @@ -193,8 +192,8 @@ void setString({ required String variable, required String value, }) { - final nameC = variable.toChar(); - final valueC = value.toChar(); + final nameC = variable.toNativeUtf8().cast(); + final valueC = value.toNativeUtf8().cast(); libgit2.git_config_set_string(configPointer, nameC, valueC); calloc.free(nameC); calloc.free(valueC); @@ -221,7 +220,7 @@ void delete({ required Pointer configPointer, required String variable, }) { - final nameC = variable.toChar(); + final nameC = variable.toNativeUtf8().cast(); final error = libgit2.git_config_delete_entry(configPointer, nameC); calloc.free(nameC); @@ -244,8 +243,8 @@ List multivarValues({ required String variable, String? regexp, }) { - final nameC = variable.toChar(); - final regexpC = regexp?.toChar() ?? nullptr; + final nameC = variable.toNativeUtf8().cast(); + final regexpC = regexp?.toNativeUtf8().cast() ?? nullptr; final iterator = calloc>(); final entry = calloc>(); @@ -262,7 +261,7 @@ List multivarValues({ while (error == 0) { error = libgit2.git_config_next(entry, iterator.value); if (error != -31) { - entries.add(entry.value.ref.value.toDartString()); + entries.add(entry.value.ref.value.cast().toDartString()); } else { break; } @@ -287,9 +286,9 @@ void setMultivar({ required String regexp, required String value, }) { - final nameC = variable.toChar(); - final regexpC = regexp.toChar(); - final valueC = value.toChar(); + final nameC = variable.toNativeUtf8().cast(); + final regexpC = regexp.toNativeUtf8().cast(); + final valueC = value.toNativeUtf8().cast(); libgit2.git_config_set_multivar(configPointer, nameC, regexpC, valueC); @@ -307,8 +306,8 @@ void deleteMultivar({ required String variable, required String regexp, }) { - final nameC = variable.toChar(); - final regexpC = regexp.toChar(); + final nameC = variable.toNativeUtf8().cast(); + final regexpC = regexp.toNativeUtf8().cast(); libgit2.git_config_delete_multivar(configPointer, nameC, regexpC); diff --git a/lib/src/bindings/credentials.dart b/lib/src/bindings/credentials.dart index 696e2ec..8b75c11 100644 --- a/lib/src/bindings/credentials.dart +++ b/lib/src/bindings/credentials.dart @@ -2,7 +2,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create a new plain-text username and password credential object. @@ -11,8 +10,8 @@ Pointer userPass({ required String password, }) { final out = calloc>(); - final usernameC = username.toChar(); - final passwordC = password.toChar(); + final usernameC = username.toNativeUtf8().cast(); + final passwordC = password.toNativeUtf8().cast(); libgit2.git_credential_userpass_plaintext_new(out, usernameC, passwordC); @@ -33,10 +32,10 @@ Pointer sshKey({ required String passPhrase, }) { final out = calloc>(); - final usernameC = username.toChar(); - final publicKeyC = publicKey.toChar(); - final privateKeyC = privateKey.toChar(); - final passPhraseC = passPhrase.toChar(); + final usernameC = username.toNativeUtf8().cast(); + final publicKeyC = publicKey.toNativeUtf8().cast(); + final privateKeyC = privateKey.toNativeUtf8().cast(); + final passPhraseC = passPhrase.toNativeUtf8().cast(); libgit2.git_credential_ssh_key_new( out, @@ -60,7 +59,7 @@ Pointer sshKey({ /// Create a new ssh key credential object used for querying an ssh-agent. Pointer sshKeyFromAgent(String username) { final out = calloc>(); - final usernameC = username.toChar(); + final usernameC = username.toNativeUtf8().cast(); libgit2.git_credential_ssh_key_from_agent(out, usernameC); @@ -80,10 +79,10 @@ Pointer sshKeyFromMemory({ required String passPhrase, }) { final out = calloc>(); - final usernameC = username.toChar(); - final publicKeyC = publicKey.toChar(); - final privateKeyC = privateKey.toChar(); - final passPhraseC = passPhrase.toChar(); + final usernameC = username.toNativeUtf8().cast(); + final publicKeyC = publicKey.toNativeUtf8().cast(); + final privateKeyC = privateKey.toNativeUtf8().cast(); + final passPhraseC = passPhrase.toNativeUtf8().cast(); libgit2.git_credential_ssh_key_memory_new( out, diff --git a/lib/src/bindings/describe.dart b/lib/src/bindings/describe.dart index 4529f59..1fae8b5 100644 --- a/lib/src/bindings/describe.dart +++ b/lib/src/bindings/describe.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Describe a commit. The returned describe result must be freed with [free]. @@ -101,12 +100,12 @@ String format({ opts.ref.always_use_long_format = alwaysUseLongFormat ? 1 : 0; } if (dirtySuffix != null) { - opts.ref.dirty_suffix = dirtySuffix.toChar(); + opts.ref.dirty_suffix = dirtySuffix.toNativeUtf8().cast(); } libgit2.git_describe_format(out, describeResultPointer, opts); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -141,7 +140,7 @@ Pointer _initOpts({ opts.ref.describe_strategy = describeStrategy; } if (pattern != null) { - opts.ref.pattern = pattern.toChar(); + opts.ref.pattern = pattern.toNativeUtf8().cast(); } if (onlyFollowFirstParent != null) { opts.ref.only_follow_first_parent = onlyFollowFirstParent ? 1 : 0; diff --git a/lib/src/bindings/diff.dart b/lib/src/bindings/diff.dart index 8e1d27c..4a49417 100644 --- a/lib/src/bindings/diff.dart +++ b/lib/src/bindings/diff.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create a diff with the difference between two index objects. The returned @@ -254,7 +253,7 @@ void merge({ /// other types of patch files. Pointer parse(String content) { final out = calloc>(); - final contentC = content.toChar(); + final contentC = content.toNativeUtf8().cast(); libgit2.git_diff_from_buffer(out, contentC, content.length); final result = out.value; @@ -384,7 +383,7 @@ String statsPrint({ final out = calloc(); final error = libgit2.git_diff_stats_to_buf(out, statsPointer, format, width); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -403,7 +402,7 @@ String addToBuf(Pointer diff) { final result = out.ref.ptr == nullptr ? '' - : out.ref.ptr.toDartString(length: out.ref.size); + : out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); diff --git a/lib/src/bindings/index.dart b/lib/src/bindings/index.dart index c7e1d06..ada8dc5 100644 --- a/lib/src/bindings/index.dart +++ b/lib/src/bindings/index.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create an in-memory index object. @@ -46,7 +45,7 @@ void setCapabilities({ /// Get the full path to the index file on disk. String path(Pointer index) { - return libgit2.git_index_path(index).toDartString(); + return libgit2.git_index_path(index).cast().toDartString(); } /// Update the contents of an existing index object in memory by reading from @@ -126,7 +125,7 @@ Pointer writeTreeTo({ /// Find the first position of any entries which point to given path in the Git /// index. bool find({required Pointer indexPointer, required String path}) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final result = libgit2.git_index_find(nullptr, indexPointer, pathC); calloc.free(pathC); @@ -165,7 +164,7 @@ Pointer getByPath({ required String path, required int stage, }) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final result = libgit2.git_index_get_bypath(indexPointer, pathC, stage); calloc.free(pathC); @@ -232,7 +231,7 @@ void addByPath({ required Pointer indexPointer, required String path, }) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_index_add_bypath(indexPointer, pathC); calloc.free(pathC); @@ -264,7 +263,7 @@ void addFromBuffer({ required Pointer entryPointer, required String buffer, }) { - final bufferC = buffer.toChar(); + final bufferC = buffer.toNativeUtf8().cast(); final error = libgit2.git_index_add_from_buffer( indexPointer, entryPointer, @@ -294,7 +293,8 @@ void addAll({ required List pathspec, }) { final pathspecC = calloc(); - final pathPointers = pathspec.map((e) => e.toChar()).toList(); + final pathPointers = + pathspec.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(pathspec.length); for (var i = 0; i < pathspec.length; i++) { @@ -338,7 +338,8 @@ void updateAll({ required List pathspec, }) { final pathspecC = calloc(); - final pathPointers = pathspec.map((e) => e.toChar()).toList(); + final pathPointers = + pathspec.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(pathspec.length); for (var i = 0; i < pathspec.length; i++) { @@ -378,7 +379,7 @@ void remove({ required String path, required int stage, }) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_index_remove(indexPointer, pathC, stage); calloc.free(pathC); @@ -394,7 +395,7 @@ void removeDirectory({ required String dir, required int stage, }) { - final dirC = dir.toChar(); + final dirC = dir.toNativeUtf8().cast(); libgit2.git_index_remove_directory(indexPointer, dirC, stage); calloc.free(dirC); } @@ -405,7 +406,8 @@ void removeAll({ required List pathspec, }) { final pathspecC = calloc(); - final pathPointers = pathspec.map((e) => e.toChar()).toList(); + final pathPointers = + pathspec.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(pathspec.length); for (var i = 0; i < pathspec.length; i++) { @@ -509,7 +511,7 @@ void conflictRemove({ required Pointer indexPointer, required String path, }) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_index_conflict_remove(indexPointer, pathC); calloc.free(pathC); diff --git a/lib/src/bindings/mailmap.dart b/lib/src/bindings/mailmap.dart index 142acfd..fd4d52d 100644 --- a/lib/src/bindings/mailmap.dart +++ b/lib/src/bindings/mailmap.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Allocate a new mailmap object. The returned mailmap must be freed with @@ -26,7 +25,7 @@ Pointer init() { /// returned mailmap must be freed with [free]. Pointer fromBuffer(String buffer) { final out = calloc>(); - final bufferC = buffer.toChar(); + final bufferC = buffer.toNativeUtf8().cast(); libgit2.git_mailmap_from_buffer(out, bufferC, buffer.length); @@ -73,8 +72,8 @@ List resolve({ }) { final outRealName = calloc>(); final outRealEmail = calloc>(); - final nameC = name.toChar(); - final emailC = email.toChar(); + final nameC = name.toNativeUtf8().cast(); + final emailC = email.toNativeUtf8().cast(); libgit2.git_mailmap_resolve( outRealName, outRealEmail, @@ -83,8 +82,8 @@ List resolve({ emailC, ); - final realName = outRealName.value.toDartString(); - final realEmail = outRealEmail.value.toDartString(); + final realName = outRealName.value.cast().toDartString(); + final realEmail = outRealEmail.value.cast().toDartString(); calloc.free(outRealName); calloc.free(outRealEmail); calloc.free(nameC); @@ -120,10 +119,10 @@ void addEntry({ String? replaceName, required String replaceEmail, }) { - final realNameC = realName?.toChar() ?? nullptr; - final realEmailC = realEmail?.toChar() ?? nullptr; - final replaceNameC = replaceName?.toChar() ?? nullptr; - final replaceEmailC = replaceEmail.toChar(); + final realNameC = realName?.toNativeUtf8().cast() ?? nullptr; + final realEmailC = realEmail?.toNativeUtf8().cast() ?? nullptr; + final replaceNameC = replaceName?.toNativeUtf8().cast() ?? nullptr; + final replaceEmailC = replaceEmail.toNativeUtf8().cast(); libgit2.git_mailmap_add_entry( mailmapPointer, diff --git a/lib/src/bindings/merge.dart b/lib/src/bindings/merge.dart index 88229bf..ecceee3 100644 --- a/lib/src/bindings/merge.dart +++ b/lib/src/bindings/merge.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Find a merge base between two commits. @@ -184,11 +183,11 @@ String mergeFile({ libgit2.git_merge_file_input_init(ancestorC, GIT_MERGE_FILE_INPUT_VERSION); libgit2.git_merge_file_input_init(oursC, GIT_MERGE_FILE_INPUT_VERSION); libgit2.git_merge_file_input_init(theirsC, GIT_MERGE_FILE_INPUT_VERSION); - ancestorC.ref.ptr = ancestor.toChar(); + ancestorC.ref.ptr = ancestor.toNativeUtf8().cast(); ancestorC.ref.size = ancestor.length; - oursC.ref.ptr = ours.toChar(); + oursC.ref.ptr = ours.toNativeUtf8().cast(); oursC.ref.size = ours.length; - theirsC.ref.ptr = theirs.toChar(); + theirsC.ref.ptr = theirs.toNativeUtf8().cast(); theirsC.ref.size = theirs.length; final opts = calloc(); @@ -196,13 +195,13 @@ String mergeFile({ opts.ref.favor = favor; opts.ref.flags = flags; if (ancestorLabel.isNotEmpty) { - opts.ref.ancestor_label = ancestorLabel.toChar(); + opts.ref.ancestor_label = ancestorLabel.toNativeUtf8().cast(); } if (oursLabel.isNotEmpty) { - opts.ref.our_label = oursLabel.toChar(); + opts.ref.our_label = oursLabel.toNativeUtf8().cast(); } if (theirsLabel.isNotEmpty) { - opts.ref.their_label = theirsLabel.toChar(); + opts.ref.their_label = theirsLabel.toNativeUtf8().cast(); } libgit2.git_merge_file(out, ancestorC, oursC, theirsC, opts); @@ -212,7 +211,7 @@ String mergeFile({ calloc.free(theirsC); calloc.free(opts); - final result = out.ref.ptr.toDartString(length: out.ref.len); + final result = out.ref.ptr.cast().toDartString(length: out.ref.len); calloc.free(out); return result; @@ -241,7 +240,7 @@ String mergeFileFromIndex({ late final String result; if (out.ref.ptr != nullptr) { - result = out.ref.ptr.toDartString(length: out.ref.len); + result = out.ref.ptr.cast().toDartString(length: out.ref.len); } calloc.free(out); diff --git a/lib/src/bindings/note.dart b/lib/src/bindings/note.dart index bf7f58a..d87e3c2 100644 --- a/lib/src/bindings/note.dart +++ b/lib/src/bindings/note.dart @@ -3,24 +3,16 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Returns list of notes for repository. The returned notes must be freed with /// [free]. /// /// Throws a [LibGit2Error] if error occured. -List> list({ - required Pointer repoPointer, - required String notesRef, -}) { - final notesRefC = notesRef.toChar(); +List> list(Pointer repo) { + final notesRef = 'refs/notes/commits'.toNativeUtf8().cast(); final iterator = calloc>(); - final iteratorError = libgit2.git_note_iterator_new( - iterator, - repoPointer, - notesRefC, - ); + final iteratorError = libgit2.git_note_iterator_new(iterator, repo, notesRef); if (iteratorError < 0) { calloc.free(iterator); @@ -36,7 +28,7 @@ List> list({ nextError = libgit2.git_note_next(noteOid, annotatedOid, iterator.value); if (nextError >= 0) { final out = calloc>(); - libgit2.git_note_read(out, repoPointer, notesRefC, annotatedOid); + libgit2.git_note_read(out, repo, notesRef, annotatedOid); final note = out.value; @@ -49,7 +41,7 @@ List> list({ calloc.free(noteOid); } - calloc.free(notesRefC); + calloc.free(notesRef); libgit2.git_note_iterator_free(iterator.value); calloc.free(iterator); @@ -62,10 +54,10 @@ List> list({ Pointer lookup({ required Pointer repoPointer, required Pointer oidPointer, - required String notesRef, + String notesRef = 'refs/notes/commits', }) { final out = calloc>(); - final notesRefC = notesRef.toChar(); + final notesRefC = notesRef.toNativeUtf8().cast(); final error = libgit2.git_note_read(out, repoPointer, notesRefC, oidPointer); final result = out.value; @@ -93,8 +85,8 @@ Pointer create({ bool force = false, }) { final out = calloc(); - final notesRefC = notesRef.toChar(); - final noteC = note.toChar(); + final notesRefC = notesRef.toNativeUtf8().cast(); + final noteC = note.toNativeUtf8().cast(); final forceC = force ? 1 : 0; final error = libgit2.git_note_create( out, @@ -128,7 +120,7 @@ void delete({ required Pointer committerPointer, required Pointer oidPointer, }) { - final notesRefC = notesRef.toChar(); + final notesRefC = notesRef.toNativeUtf8().cast(); final error = libgit2.git_note_remove( repoPointer, @@ -150,7 +142,7 @@ Pointer id(Pointer note) => libgit2.git_note_id(note); /// Get the note message. String message(Pointer note) { - return libgit2.git_note_message(note).toDartString(); + return libgit2.git_note_message(note).cast().toDartString(); } /// Free memory allocated for note object. diff --git a/lib/src/bindings/odb.dart b/lib/src/bindings/odb.dart index 33aa62f..7ef461e 100644 --- a/lib/src/bindings/odb.dart +++ b/lib/src/bindings/odb.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/oid.dart' as oid_bindings; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/oid.dart'; import 'package:libgit2dart/src/util.dart'; @@ -37,7 +36,7 @@ void addDiskAlternate({ required Pointer odbPointer, required String path, }) { - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); libgit2.git_odb_add_disk_alternate(odbPointer, pathC); calloc.free(pathC); } @@ -185,7 +184,7 @@ Pointer write({ throw LibGit2Error(libgit2.git_error_last()); } - final bufferC = data.toChar(); + final bufferC = data.toNativeUtf8().cast(); libgit2.git_odb_stream_write(stream.value, bufferC, data.length); final out = calloc(); diff --git a/lib/src/bindings/oid.dart b/lib/src/bindings/oid.dart index 2b061e5..2de419c 100644 --- a/lib/src/bindings/oid.dart +++ b/lib/src/bindings/oid.dart @@ -2,13 +2,12 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Parse N characters of a hex formatted object id into a git_oid. Pointer fromStrN(String hex) { final out = calloc(); - final hexC = hex.toChar(); + final hexC = hex.toNativeUtf8().cast(); libgit2.git_oid_fromstrn(out, hexC, hex.length); calloc.free(hexC); @@ -19,7 +18,7 @@ Pointer fromStrN(String hex) { /// Parse a hex formatted object id into a git_oid. Pointer fromSHA(String hex) { final out = calloc(); - final hexC = hex.toChar(); + final hexC = hex.toNativeUtf8().cast(); libgit2.git_oid_fromstr(out, hexC); calloc.free(hexC); @@ -48,7 +47,7 @@ String toSHA(Pointer id) { final out = calloc(40); libgit2.git_oid_fmt(out, id); - final result = out.toDartString(length: 40); + final result = out.cast().toDartString(length: 40); calloc.free(out); return result; } diff --git a/lib/src/bindings/packbuilder.dart b/lib/src/bindings/packbuilder.dart index 9d5aae1..026e2a9 100644 --- a/lib/src/bindings/packbuilder.dart +++ b/lib/src/bindings/packbuilder.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Initialize a new packbuilder. The returned packbuilder must be freed with @@ -122,7 +121,7 @@ void write({ required Pointer packbuilderPointer, String? path, }) { - final pathC = path?.toChar() ?? nullptr; + final pathC = path?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_packbuilder_write( packbuilderPointer, pathC, @@ -154,7 +153,7 @@ int writtenCount(Pointer pb) { /// correct after the packfile has been written. String name(Pointer pb) { final result = libgit2.git_packbuilder_name(pb); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Set number of threads to spawn. diff --git a/lib/src/bindings/patch.dart b/lib/src/bindings/patch.dart index 5815ed4..53e7020 100644 --- a/lib/src/bindings/patch.dart +++ b/lib/src/bindings/patch.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Directly generate a patch from the difference between two buffers. The @@ -18,11 +17,11 @@ Pointer fromBuffers({ required int interhunkLines, }) { final out = calloc>(); - final oldBufferC = oldBuffer?.toChar() ?? nullptr; - final oldAsPathC = oldAsPath?.toChar() ?? nullptr; + final oldBufferC = oldBuffer?.toNativeUtf8().cast() ?? nullptr; + final oldAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; final oldLen = oldBuffer?.length ?? 0; - final newBufferC = newBuffer?.toChar() ?? nullptr; - final newAsPathC = oldAsPath?.toChar() ?? nullptr; + final newBufferC = newBuffer?.toNativeUtf8().cast() ?? nullptr; + final newAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; final newLen = newBuffer?.length ?? 0; final opts = _diffOptionsInit( flags: flags, @@ -66,8 +65,8 @@ Pointer fromBlobs({ required int interhunkLines, }) { final out = calloc>(); - final oldAsPathC = oldAsPath?.toChar() ?? nullptr; - final newAsPathC = oldAsPath?.toChar() ?? nullptr; + final oldAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; + final newAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; final opts = _diffOptionsInit( flags: flags, contextLines: contextLines, @@ -105,9 +104,9 @@ Pointer fromBlobAndBuffer({ required int interhunkLines, }) { final out = calloc>(); - final oldAsPathC = oldAsPath?.toChar() ?? nullptr; - final bufferC = buffer?.toChar() ?? nullptr; - final bufferAsPathC = oldAsPath?.toChar() ?? nullptr; + final oldAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; + final bufferC = buffer?.toNativeUtf8().cast() ?? nullptr; + final bufferAsPathC = oldAsPath?.toNativeUtf8().cast() ?? nullptr; final bufferLen = buffer?.length ?? 0; final opts = _diffOptionsInit( flags: flags, @@ -176,8 +175,8 @@ Map hunk({ required int hunkIndex, }) { final out = calloc>(); - final linesInHunk = calloc(); - libgit2.git_patch_get_hunk(out, linesInHunk, patchPointer, hunkIndex); + final linesInHunk = calloc(); + libgit2.git_patch_get_hunk(out, linesInHunk.cast(), patchPointer, hunkIndex); final hunk = out.value; final linesN = linesInHunk.value; @@ -236,7 +235,7 @@ String text(Pointer patch) { final out = calloc(); final error = libgit2.git_patch_to_buf(out, patch); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); diff --git a/lib/src/bindings/rebase.dart b/lib/src/bindings/rebase.dart index 71e8d09..3dabb35 100644 --- a/lib/src/bindings/rebase.dart +++ b/lib/src/bindings/rebase.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Initializes a rebase operation to rebase the changes in [branchPointer] @@ -129,7 +128,7 @@ void commit({ required String? message, }) { final out = calloc(); - final messageC = message?.toChar() ?? nullptr; + final messageC = message?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_rebase_commit( out, @@ -164,7 +163,7 @@ Pointer origHeadOid(Pointer rebase) => /// Gets the original HEAD ref name for merge rebases. String origHeadName(Pointer rebase) { final result = libgit2.git_rebase_orig_head_name(rebase); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Gets the onto id for merge rebases. @@ -173,7 +172,7 @@ Pointer ontoOid(Pointer rebase) => /// Gets the onto ref name for merge rebases. String ontoName(Pointer rebase) { - return libgit2.git_rebase_onto_name(rebase).toDartString(); + return libgit2.git_rebase_onto_name(rebase).cast().toDartString(); } /// Free memory allocated for rebase object. diff --git a/lib/src/bindings/reference.dart b/lib/src/bindings/reference.dart index 81e190c..cff69b8 100644 --- a/lib/src/bindings/reference.dart +++ b/lib/src/bindings/reference.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Get the type of a reference. @@ -56,7 +55,7 @@ Pointer lookup({ required String name, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_reference_lookup(out, repoPointer, nameC); final result = out.value; @@ -73,7 +72,7 @@ Pointer lookup({ /// Get the full name of a reference. String name(Pointer ref) { - return libgit2.git_reference_name(ref).toDartString(); + return libgit2.git_reference_name(ref).cast().toDartString(); } /// Get the reference's short name. @@ -81,7 +80,7 @@ String name(Pointer ref) { /// This will transform the reference name into a name "human-readable" version. /// If no shortname is appropriate, it will return the full name. String shorthand(Pointer ref) { - return libgit2.git_reference_shorthand(ref).toDartString(); + return libgit2.git_reference_shorthand(ref).cast().toDartString(); } /// Rename an existing reference. The returned reference must be freed with @@ -105,9 +104,9 @@ Pointer rename({ String? logMessage, }) { final out = calloc>(); - final newNameC = newName.toChar(); + final newNameC = newName.toNativeUtf8().cast(); final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toChar() ?? nullptr; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_reference_rename( out, refPointer, @@ -141,7 +140,9 @@ List list(Pointer repo) { throw LibGit2Error(libgit2.git_error_last()); } else { for (var i = 0; i < array.ref.count; i++) { - result.add(array.ref.strings.elementAt(i).value.toDartString()); + result.add( + array.ref.strings.elementAt(i).value.cast().toDartString(), + ); } } @@ -155,7 +156,7 @@ bool hasLog({ required Pointer repoPointer, required String name, }) { - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final result = libgit2.git_reference_has_log(repoPointer, nameC); calloc.free(nameC); @@ -172,7 +173,7 @@ void ensureLog({ required Pointer repoPointer, required String refName, }) { - final refNameC = refName.toChar(); + final refNameC = refName.toNativeUtf8().cast(); final error = libgit2.git_reference_ensure_log(repoPointer, refNameC); calloc.free(refNameC); @@ -236,9 +237,9 @@ Pointer createDirect({ String? logMessage, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toChar() ?? nullptr; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_reference_create( out, repoPointer, @@ -294,10 +295,10 @@ Pointer createSymbolic({ String? logMessage, }) { final out = calloc>(); - final nameC = name.toChar(); - final targetC = target.toChar(); + final nameC = name.toNativeUtf8().cast(); + final targetC = target.toNativeUtf8().cast(); final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toChar() ?? nullptr; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_reference_symbolic_create( out, repoPointer, @@ -347,7 +348,7 @@ Pointer setTarget({ String? logMessage, }) { final out = calloc>(); - final logMessageC = logMessage?.toChar() ?? nullptr; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_reference_set_target( out, refPointer, @@ -387,8 +388,8 @@ Pointer setTargetSymbolic({ String? logMessage, }) { final out = calloc>(); - final targetC = target.toChar(); - final logMessageC = logMessage?.toChar() ?? nullptr; + final targetC = target.toNativeUtf8().cast(); + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_reference_symbolic_set_target( out, refPointer, diff --git a/lib/src/bindings/reflog.dart b/lib/src/bindings/reflog.dart index ff982f2..1fbd1da 100644 --- a/lib/src/bindings/reflog.dart +++ b/lib/src/bindings/reflog.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Read the reflog for the given reference. The returned reflog must be @@ -16,7 +15,7 @@ Pointer read({ required String name, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_reflog_read(out, repoPointer, nameC); final result = out.value; @@ -44,7 +43,7 @@ void delete({ required Pointer repoPointer, required String name, }) { - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_reflog_delete(repoPointer, nameC); calloc.free(nameC); } @@ -61,8 +60,8 @@ void rename({ required String oldName, required String newName, }) { - final oldNameC = oldName.toChar(); - final newNameC = newName.toChar(); + final oldNameC = oldName.toNativeUtf8().cast(); + final newNameC = newName.toNativeUtf8().cast(); final error = libgit2.git_reflog_rename(repoPointer, oldNameC, newNameC); calloc.free(oldNameC); @@ -82,7 +81,8 @@ void add({ required Pointer committerPointer, required String message, }) { - final messageC = message.isEmpty ? nullptr : message.toChar(); + final messageC = + message.isEmpty ? nullptr : message.toNativeUtf8().cast(); final error = libgit2.git_reflog_append( reflogPointer, @@ -130,7 +130,7 @@ Pointer getByIndex({ /// Get the log message. String entryMessage(Pointer entry) { final result = libgit2.git_reflog_entry_message(entry); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Get the committer of this entry. The returned signature must be freed. diff --git a/lib/src/bindings/refspec.dart b/lib/src/bindings/refspec.dart index c42ffa2..6d0c1a4 100644 --- a/lib/src/bindings/refspec.dart +++ b/lib/src/bindings/refspec.dart @@ -3,17 +3,16 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Get the source specifier. String source(Pointer refspec) { - return libgit2.git_refspec_src(refspec).toDartString(); + return libgit2.git_refspec_src(refspec).cast().toDartString(); } /// Get the destination specifier. String destination(Pointer refspec) { - return libgit2.git_refspec_dst(refspec).toDartString(); + return libgit2.git_refspec_dst(refspec).cast().toDartString(); } /// Get the force update setting. @@ -23,7 +22,7 @@ bool force(Pointer refspec) { /// Get the refspec's string. String string(Pointer refspec) { - return libgit2.git_refspec_string(refspec).toDartString(); + return libgit2.git_refspec_string(refspec).cast().toDartString(); } /// Get the refspec's direction. @@ -35,7 +34,7 @@ bool matchesSource({ required Pointer refspecPointer, required String refname, }) { - final refnameC = refname.toChar(); + final refnameC = refname.toNativeUtf8().cast(); final result = libgit2.git_refspec_src_matches(refspecPointer, refnameC); calloc.free(refnameC); @@ -48,7 +47,7 @@ bool matchesDestination({ required Pointer refspecPointer, required String refname, }) { - final refnameC = refname.toChar(); + final refnameC = refname.toNativeUtf8().cast(); final result = libgit2.git_refspec_dst_matches(refspecPointer, refnameC); calloc.free(refnameC); @@ -64,10 +63,10 @@ String transform({ required String name, }) { final out = calloc(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_refspec_transform(out, refspecPointer, nameC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -89,10 +88,10 @@ String rTransform({ required String name, }) { final out = calloc(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_refspec_rtransform(out, refspecPointer, nameC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); diff --git a/lib/src/bindings/remote.dart b/lib/src/bindings/remote.dart index 6c68426..3305c7e 100644 --- a/lib/src/bindings/remote.dart +++ b/lib/src/bindings/remote.dart @@ -5,7 +5,6 @@ import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart'; import 'package:libgit2dart/src/callbacks.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/oid.dart'; import 'package:libgit2dart/src/util.dart'; @@ -15,7 +14,8 @@ List list(Pointer repo) { libgit2.git_remote_list(out, repo); final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() ]; calloc.free(out); @@ -34,7 +34,7 @@ Pointer lookup({ required String name, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_remote_lookup(out, repoPointer, nameC); final result = out.value; @@ -59,8 +59,8 @@ Pointer create({ required String url, }) { final out = calloc>(); - final nameC = name.toChar(); - final urlC = url.toChar(); + final nameC = name.toNativeUtf8().cast(); + final urlC = url.toNativeUtf8().cast(); final error = libgit2.git_remote_create(out, repoPointer, nameC, urlC); final result = out.value; @@ -87,9 +87,9 @@ Pointer createWithFetchSpec({ required String fetch, }) { final out = calloc>(); - final nameC = name.toChar(); - final urlC = url.toChar(); - final fetchC = fetch.toChar(); + final nameC = name.toNativeUtf8().cast(); + final urlC = url.toNativeUtf8().cast(); + final fetchC = fetch.toNativeUtf8().cast(); final error = libgit2.git_remote_create_with_fetchspec( out, repoPointer, @@ -122,7 +122,7 @@ void delete({ required Pointer repoPointer, required String name, }) { - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_remote_delete(repoPointer, nameC); calloc.free(nameC); @@ -151,8 +151,8 @@ List rename({ required String newName, }) { final out = calloc(); - final nameC = name.toChar(); - final newNameC = newName.toChar(); + final nameC = name.toNativeUtf8().cast(); + final newNameC = newName.toNativeUtf8().cast(); final error = libgit2.git_remote_rename(out, repoPointer, nameC, newNameC); calloc.free(nameC); @@ -163,7 +163,8 @@ List rename({ throw LibGit2Error(libgit2.git_error_last()); } else { final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() ]; calloc.free(out); @@ -183,8 +184,8 @@ void setUrl({ required String remote, required String url, }) { - final remoteC = remote.toChar(); - final urlC = url.toChar(); + final remoteC = remote.toNativeUtf8().cast(); + final urlC = url.toNativeUtf8().cast(); final error = libgit2.git_remote_set_url(repoPointer, remoteC, urlC); calloc.free(remoteC); @@ -206,8 +207,8 @@ void setPushUrl({ required String remote, required String url, }) { - final remoteC = remote.toChar(); - final urlC = url.toChar(); + final remoteC = remote.toNativeUtf8().cast(); + final urlC = url.toNativeUtf8().cast(); final error = libgit2.git_remote_set_pushurl(repoPointer, remoteC, urlC); calloc.free(remoteC); @@ -221,12 +222,12 @@ void setPushUrl({ /// Get the remote's name. String name(Pointer remote) { final result = libgit2.git_remote_name(remote); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Get the remote's url. String url(Pointer remote) { - return libgit2.git_remote_url(remote).toDartString(); + return libgit2.git_remote_url(remote).cast().toDartString(); } /// Get the remote's url for pushing. @@ -234,7 +235,7 @@ String url(Pointer remote) { /// Returns empty string if no special url for pushing is set. String pushUrl(Pointer remote) { final result = libgit2.git_remote_pushurl(remote); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Get the number of refspecs for a remote. @@ -255,7 +256,8 @@ List fetchRefspecs(Pointer remote) { libgit2.git_remote_get_fetch_refspecs(out, remote); final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() ]; calloc.free(out); @@ -269,7 +271,8 @@ List pushRefspecs(Pointer remote) { libgit2.git_remote_get_push_refspecs(out, remote); final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() ]; calloc.free(out); @@ -288,8 +291,8 @@ void addFetch({ required String remote, required String refspec, }) { - final remoteC = remote.toChar(); - final refspecC = refspec.toChar(); + final remoteC = remote.toNativeUtf8().cast(); + final refspecC = refspec.toNativeUtf8().cast(); final error = libgit2.git_remote_add_fetch(repoPointer, remoteC, refspecC); calloc.free(remoteC); @@ -311,8 +314,8 @@ void addPush({ required String remote, required String refspec, }) { - final remoteC = remote.toChar(); - final refspecC = refspec.toChar(); + final remoteC = remote.toNativeUtf8().cast(); + final refspecC = refspec.toNativeUtf8().cast(); final error = libgit2.git_remote_add_push(repoPointer, remoteC, refspecC); calloc.free(remoteC); @@ -390,11 +393,12 @@ List> lsRemotes(Pointer remote) { remote['local'] = local; remote['loid'] = local ? Oid.fromRaw(out[0][i].ref.loid) : null; - remote['name'] = - out[0][i].ref.name == nullptr ? '' : out[0][i].ref.name.toDartString(); + remote['name'] = out[0][i].ref.name == nullptr + ? '' + : out[0][i].ref.name.cast().toDartString(); remote['symref'] = out[0][i].ref.symref_target == nullptr ? '' - : out[0][i].ref.symref_target.toDartString(); + : out[0][i].ref.symref_target.cast().toDartString(); remote['oid'] = Oid.fromRaw(out[0][i].ref.oid); result.add(remote); @@ -421,7 +425,8 @@ void fetch({ String? proxyOption, }) { final refspecsC = calloc(); - final refspecsPointers = refspecs.map((e) => e.toChar()).toList(); + final refspecsPointers = + refspecs.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(refspecs.length); for (var i = 0; i < refspecs.length; i++) { @@ -430,7 +435,7 @@ void fetch({ refspecsC.ref.count = refspecs.length; refspecsC.ref.strings = strArray; - final reflogMessageC = reflogMessage?.toChar() ?? nullptr; + final reflogMessageC = reflogMessage?.toNativeUtf8().cast() ?? nullptr; final proxyOptions = _proxyOptionsInit(proxyOption); @@ -476,7 +481,8 @@ void push({ String? proxyOption, }) { final refspecsC = calloc(); - final refspecsPointers = refspecs.map((e) => e.toChar()).toList(); + final refspecsPointers = + refspecs.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(refspecs.length); for (var i = 0; i < refspecs.length; i++) { @@ -566,7 +572,7 @@ Pointer _proxyOptionsInit(String? proxyOption) { proxyOptions.ref.type = git_proxy_t.GIT_PROXY_AUTO; } else { proxyOptions.ref.type = git_proxy_t.GIT_PROXY_SPECIFIED; - proxyOptions.ref.url = proxyOption.toChar(); + proxyOptions.ref.url = proxyOption.toNativeUtf8().cast(); } return proxyOptions; diff --git a/lib/src/bindings/remote_callbacks.dart b/lib/src/bindings/remote_callbacks.dart index d1f0e1b..c0ee976 100644 --- a/lib/src/bindings/remote_callbacks.dart +++ b/lib/src/bindings/remote_callbacks.dart @@ -8,7 +8,6 @@ import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/remote.dart' as remote_bindings; import 'package:libgit2dart/src/bindings/repository.dart' as repository_bindings; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; class RemoteCallbacks { @@ -34,7 +33,7 @@ class RemoteCallbacks { int length, Pointer payload, ) { - sidebandProgress!(progressOutput.toDartString(length: length)); + sidebandProgress!(progressOutput.cast().toDartString(length: length)); return 0; } @@ -48,7 +47,7 @@ class RemoteCallbacks { Pointer newOid, Pointer payload, ) { - updateTips!(refname.toDartString(), Oid(oldOid), Oid(newOid)); + updateTips!(refname.cast().toDartString(), Oid(oldOid), Oid(newOid)); return 0; } @@ -63,8 +62,9 @@ class RemoteCallbacks { Pointer message, Pointer payload, ) { - final messageResult = message == nullptr ? '' : message.toDartString(); - pushUpdateReference!(refname.toDartString(), messageResult); + final messageResult = + message == nullptr ? '' : message.cast().toDartString(); + pushUpdateReference!(refname.cast().toDartString(), messageResult); return 0; } @@ -155,7 +155,7 @@ class RemoteCallbacks { if (payload.cast().value == 2) { libgit2.git_error_set_str( git_error_t.GIT_ERROR_INVALID, - 'Incorrect credentials.'.toChar(), + 'Incorrect credentials.'.toNativeUtf8().cast(), ); throw LibGit2Error(libgit2.git_error_last()); } @@ -165,7 +165,7 @@ class RemoteCallbacks { if (allowedTypes & credentialType.value != credentialType.value) { libgit2.git_error_set_str( git_error_t.GIT_ERROR_INVALID, - 'Invalid credential type $credentialType'.toChar(), + 'Invalid credential type $credentialType'.toNativeUtf8().cast(), ); throw LibGit2Error(libgit2.git_error_last()); } diff --git a/lib/src/bindings/repository.dart b/lib/src/bindings/repository.dart index a1d0a79..44a8745 100644 --- a/lib/src/bindings/repository.dart +++ b/lib/src/bindings/repository.dart @@ -5,7 +5,6 @@ import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart'; import 'package:libgit2dart/src/callbacks.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/remote.dart'; import 'package:libgit2dart/src/repository.dart'; import 'package:libgit2dart/src/util.dart'; @@ -18,7 +17,7 @@ import 'package:libgit2dart/src/util.dart'; /// Throws a [LibGit2Error] if error occured. Pointer open(String path) { final out = calloc>(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_repository_open(out, pathC); final result = out.value; @@ -45,15 +44,15 @@ String discover({ String? ceilingDirs, }) { final out = calloc(); - final startPathC = startPath.toChar(); - final ceilingDirsC = ceilingDirs?.toChar() ?? nullptr; + final startPathC = startPath.toNativeUtf8().cast(); + final ceilingDirsC = ceilingDirs?.toNativeUtf8().cast() ?? nullptr; libgit2.git_repository_discover(out, startPathC, 0, ceilingDirsC); calloc.free(startPathC); calloc.free(ceilingDirsC); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -76,12 +75,12 @@ Pointer init({ String? originUrl, }) { final out = calloc>(); - final pathC = path.toChar(); - final workdirPathC = workdirPath?.toChar() ?? nullptr; - final descriptionC = description?.toChar() ?? nullptr; - final templatePathC = templatePath?.toChar() ?? nullptr; - final initialHeadC = initialHead?.toChar() ?? nullptr; - final originUrlC = originUrl?.toChar() ?? nullptr; + final pathC = path.toNativeUtf8().cast(); + final workdirPathC = workdirPath?.toNativeUtf8().cast() ?? nullptr; + final descriptionC = description?.toNativeUtf8().cast() ?? nullptr; + final templatePathC = templatePath?.toNativeUtf8().cast() ?? nullptr; + final initialHeadC = initialHead?.toNativeUtf8().cast() ?? nullptr; + final originUrlC = originUrl?.toNativeUtf8().cast() ?? nullptr; final opts = calloc(); libgit2.git_repository_init_options_init( opts, @@ -130,9 +129,10 @@ Pointer clone({ required Callbacks callbacks, }) { final out = calloc>(); - final urlC = url.toChar(); - final localPathC = localPath.toChar(); - final checkoutBranchC = checkoutBranch?.toChar() ?? nullptr; + final urlC = url.toNativeUtf8().cast(); + final localPathC = localPath.toNativeUtf8().cast(); + final checkoutBranchC = + checkoutBranch?.toNativeUtf8().cast() ?? nullptr; final cloneOptions = calloc(); libgit2.git_clone_options_init(cloneOptions, GIT_CLONE_OPTIONS_VERSION); @@ -187,7 +187,7 @@ Pointer clone({ /// Returns the path to the `.git` folder for normal repositories or the /// repository itself for bare repositories. String path(Pointer repo) { - return libgit2.git_repository_path(repo).toDartString(); + return libgit2.git_repository_path(repo).cast().toDartString(); } /// Get the path of the shared common directory for this repository. @@ -196,7 +196,7 @@ String path(Pointer repo) { /// If the repository is a worktree, it is the parent repo's `.git` folder. /// Otherwise, it is the `.git` folder. String commonDir(Pointer repo) { - return libgit2.git_repository_commondir(repo).toDartString(); + return libgit2.git_repository_commondir(repo).cast().toDartString(); } /// Get the currently active namespace for this repository. @@ -205,7 +205,11 @@ String commonDir(Pointer repo) { /// empty string is returned. String getNamespace(Pointer repo) { final result = libgit2.git_repository_get_namespace(repo); - return result == nullptr ? '' : result.toDartString(); + if (result == nullptr) { + return ''; + } else { + return result.cast().toDartString(); + } } /// Sets the active namespace for this repository. @@ -219,7 +223,7 @@ void setNamespace({ required Pointer repoPointer, String? namespace, }) { - final namespaceC = namespace?.toChar() ?? nullptr; + final namespaceC = namespace?.toNativeUtf8().cast() ?? nullptr; libgit2.git_repository_set_namespace(repoPointer, namespaceC); calloc.free(namespaceC); } @@ -306,8 +310,8 @@ void setIdentity({ String? name, String? email, }) { - final nameC = name?.toChar() ?? nullptr; - final emailC = email?.toChar() ?? nullptr; + final nameC = name?.toNativeUtf8().cast() ?? nullptr; + final emailC = email?.toNativeUtf8().cast() ?? nullptr; libgit2.git_repository_set_ident(repoPointer, nameC, emailC); @@ -327,8 +331,8 @@ List identity(Pointer repo) { if (name.value == nullptr && email.value == nullptr) { return identity; } else { - identity.add(name.value.toDartString()); - identity.add(email.value.toDartString()); + identity.add(name.value.cast().toDartString()); + identity.add(email.value.cast().toDartString()); } calloc.free(name); @@ -412,7 +416,7 @@ String message(Pointer repo) { final out = calloc(); final error = libgit2.git_repository_message(out, repo); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -490,7 +494,7 @@ void setHead({ required Pointer repoPointer, required String refname, }) { - final refnameC = refname.toChar(); + final refnameC = refname.toNativeUtf8().cast(); final error = libgit2.git_repository_set_head(repoPointer, refnameC); calloc.free(refnameC); @@ -541,7 +545,7 @@ void setWorkdir({ required String path, required bool updateGitlink, }) { - final workdirC = path.toChar(); + final workdirC = path.toNativeUtf8().cast(); final updateGitlinkC = updateGitlink ? 1 : 0; final error = libgit2.git_repository_set_workdir( repoPointer, @@ -577,7 +581,12 @@ void stateCleanup(Pointer repo) { /// If the repository is bare, this function will always return empty string. String workdir(Pointer repo) { final result = libgit2.git_repository_workdir(repo); - return result == nullptr ? '' : result.toDartString(); + + if (result == nullptr) { + return ''; + } else { + return result.cast().toDartString(); + } } /// Free a previously allocated repository. diff --git a/lib/src/bindings/reset.dart b/lib/src/bindings/reset.dart index cca5dba..e1c89ec 100644 --- a/lib/src/bindings/reset.dart +++ b/lib/src/bindings/reset.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Sets the current head to the specified commit oid and optionally resets the @@ -41,7 +40,8 @@ void resetDefault({ required List pathspec, }) { final pathspecC = calloc(); - final pathPointers = pathspec.map((e) => e.toChar()).toList(); + final pathPointers = + pathspec.map((e) => e.toNativeUtf8().cast()).toList(); final strArray = calloc>(pathspec.length); for (var i = 0; i < pathspec.length; i++) { diff --git a/lib/src/bindings/revparse.dart b/lib/src/bindings/revparse.dart index 3452687..acf14c8 100644 --- a/lib/src/bindings/revparse.dart +++ b/lib/src/bindings/revparse.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Parse a revision string for from, to, and intent. @@ -17,7 +16,7 @@ Pointer revParse({ required String spec, }) { final out = calloc(); - final specC = spec.toChar(); + final specC = spec.toNativeUtf8().cast(); final error = libgit2.git_revparse(out, repoPointer, specC); @@ -43,7 +42,7 @@ Pointer revParseSingle({ required String spec, }) { final out = calloc>(); - final specC = spec.toChar(); + final specC = spec.toNativeUtf8().cast(); final error = libgit2.git_revparse_single(out, repoPointer, specC); @@ -77,7 +76,7 @@ List revParseExt({ }) { final objectOut = calloc>(); final referenceOut = calloc>(); - final specC = spec.toChar(); + final specC = spec.toNativeUtf8().cast(); final error = libgit2.git_revparse_ext( objectOut, @@ -86,7 +85,8 @@ List revParseExt({ specC, ); - final result = [objectOut.value]; + final result = []; + result.add(objectOut.value); if (referenceOut.value != nullptr) { result.add(referenceOut.value); } diff --git a/lib/src/bindings/revwalk.dart b/lib/src/bindings/revwalk.dart index 93d9bf6..00297ed 100644 --- a/lib/src/bindings/revwalk.dart +++ b/lib/src/bindings/revwalk.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/commit.dart' as commit_bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Allocate a new revision walker to iterate through a repo. The returned @@ -82,7 +81,7 @@ void pushGlob({ required Pointer walkerPointer, required String glob, }) { - final globC = glob.toChar(); + final globC = glob.toNativeUtf8().cast(); libgit2.git_revwalk_push_glob(walkerPointer, globC); calloc.free(globC); } @@ -100,7 +99,7 @@ void pushRef({ required Pointer walkerPointer, required String refName, }) { - final refNameC = refName.toChar(); + final refNameC = refName.toNativeUtf8().cast(); final error = libgit2.git_revwalk_push_ref(walkerPointer, refNameC); calloc.free(refNameC); @@ -120,7 +119,7 @@ void pushRange({ required Pointer walkerPointer, required String range, }) { - final rangeC = range.toChar(); + final rangeC = range.toNativeUtf8().cast(); final error = libgit2.git_revwalk_push_range(walkerPointer, rangeC); calloc.free(rangeC); @@ -200,7 +199,7 @@ void hideGlob({ required Pointer walkerPointer, required String glob, }) { - final globC = glob.toChar(); + final globC = glob.toNativeUtf8().cast(); libgit2.git_revwalk_hide_glob(walkerPointer, globC); calloc.free(globC); } @@ -218,7 +217,7 @@ void hideRef({ required Pointer walkerPointer, required String refName, }) { - final refNameC = refName.toChar(); + final refNameC = refName.toNativeUtf8().cast(); final error = libgit2.git_revwalk_hide_ref(walkerPointer, refNameC); calloc.free(refNameC); diff --git a/lib/src/bindings/signature.dart b/lib/src/bindings/signature.dart index 81b260b..5a02449 100644 --- a/lib/src/bindings/signature.dart +++ b/lib/src/bindings/signature.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create a new action signature. The returned signature must be freed with @@ -20,8 +19,8 @@ Pointer create({ required int offset, }) { final out = calloc>(); - final nameC = name.toChar(); - final emailC = email.toChar(); + final nameC = name.toNativeUtf8().cast(); + final emailC = email.toNativeUtf8().cast(); final error = libgit2.git_signature_new(out, nameC, emailC, time, offset); final result = out.value; @@ -43,8 +42,8 @@ Pointer create({ /// Throws a [LibGit2Error] if error occured. Pointer now({required String name, required String email}) { final out = calloc>(); - final nameC = name.toChar(); - final emailC = email.toChar(); + final nameC = name.toNativeUtf8().cast(); + final emailC = email.toNativeUtf8().cast(); final error = libgit2.git_signature_now(out, nameC, emailC); final result = out.value; diff --git a/lib/src/bindings/stash.dart b/lib/src/bindings/stash.dart index 91cc4c5..bfb9a15 100644 --- a/lib/src/bindings/stash.dart +++ b/lib/src/bindings/stash.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/checkout.dart' as checkout_bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/oid.dart'; import 'package:libgit2dart/src/stash.dart'; import 'package:libgit2dart/src/util.dart'; @@ -19,7 +18,7 @@ Pointer save({ required int flags, }) { final out = calloc(); - final messageC = message?.toChar() ?? nullptr; + final messageC = message?.toNativeUtf8().cast() ?? nullptr; final error = libgit2.git_stash_save( out, repoPointer, @@ -149,7 +148,11 @@ int _stashCb( Pointer payload, ) { _stashList.add( - Stash(index: index, message: message.toDartString(), oid: Oid(oid)), + Stash( + index: index, + message: message.cast().toDartString(), + oid: Oid(oid), + ), ); return 0; } diff --git a/lib/src/bindings/status.dart b/lib/src/bindings/status.dart index 57e33cf..29ddf58 100644 --- a/lib/src/bindings/status.dart +++ b/lib/src/bindings/status.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Gather file status information and populate the git_status_list. The @@ -64,7 +63,7 @@ Pointer getByIndex({ /// Throws a [LibGit2Error] if error occured. int file({required Pointer repoPointer, required String path}) { final out = calloc(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_status_file(out, repoPointer, pathC); final result = out.value; diff --git a/lib/src/bindings/submodule.dart b/lib/src/bindings/submodule.dart index ce9755c..186829b 100644 --- a/lib/src/bindings/submodule.dart +++ b/lib/src/bindings/submodule.dart @@ -5,7 +5,6 @@ import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/remote_callbacks.dart'; import 'package:libgit2dart/src/callbacks.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// List of submodule paths. @@ -51,7 +50,7 @@ Pointer lookup({ required String name, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_submodule_lookup(out, repoPointer, nameC); @@ -160,8 +159,8 @@ Pointer addSetup({ bool useGitlink = true, }) { final out = calloc>(); - final urlC = url.toChar(); - final pathC = path.toChar(); + final urlC = url.toNativeUtf8().cast(); + final pathC = path.toNativeUtf8().cast(); final useGitlinkC = useGitlink ? 1 : 0; final error = libgit2.git_submodule_add_setup( out, @@ -234,7 +233,7 @@ int status({ required int ignore, }) { final out = calloc(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_submodule_status(out, repoPointer, nameC, ignore); final result = out.value; @@ -270,7 +269,7 @@ void reload({ /// Get the name of submodule. String name(Pointer submodule) { - return libgit2.git_submodule_name(submodule).toDartString(); + return libgit2.git_submodule_name(submodule).cast().toDartString(); } /// Get the path to the submodule. @@ -278,12 +277,12 @@ String name(Pointer submodule) { /// The path is almost always the same as the submodule name, but the two /// are actually not required to match. String path(Pointer submodule) { - return libgit2.git_submodule_path(submodule).toDartString(); + return libgit2.git_submodule_path(submodule).cast().toDartString(); } /// Get the URL for the submodule. String url(Pointer submodule) { - return libgit2.git_submodule_url(submodule).toDartString(); + return libgit2.git_submodule_url(submodule).cast().toDartString(); } /// Set the URL for the submodule in the configuration. @@ -295,8 +294,8 @@ void setUrl({ required String name, required String url, }) { - final nameC = name.toChar(); - final urlC = url.toChar(); + final nameC = name.toNativeUtf8().cast(); + final urlC = url.toNativeUtf8().cast(); libgit2.git_submodule_set_url(repoPointer, nameC, urlC); @@ -307,7 +306,7 @@ void setUrl({ /// Get the branch for the submodule. String branch(Pointer submodule) { final result = libgit2.git_submodule_branch(submodule); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Set the branch for the submodule in the configuration. @@ -319,8 +318,8 @@ void setBranch({ required String name, required String branch, }) { - final nameC = name.toChar(); - final branchC = branch.toChar(); + final nameC = name.toNativeUtf8().cast(); + final branchC = branch.toNativeUtf8().cast(); libgit2.git_submodule_set_branch(repoPointer, nameC, branchC); @@ -370,7 +369,7 @@ void setIgnore({ required String name, required int ignore, }) { - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_submodule_set_ignore(repoPointer, nameC, ignore); calloc.free(nameC); } @@ -390,7 +389,7 @@ void setUpdateRule({ required String name, required int update, }) { - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); libgit2.git_submodule_set_update(repoPointer, nameC, update); calloc.free(nameC); } diff --git a/lib/src/bindings/tag.dart b/lib/src/bindings/tag.dart index 3c6efff..6201a1f 100644 --- a/lib/src/bindings/tag.dart +++ b/lib/src/bindings/tag.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Fill a list with all the tags in the repository. @@ -13,16 +12,16 @@ List list(Pointer repo) { final out = calloc(); final error = libgit2.git_tag_list(out, repo); + final result = []; + if (error < 0) { calloc.free(out); throw LibGit2Error(libgit2.git_error_last()); } else { - final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() - ]; - + for (var i = 0; i < out.ref.count; i++) { + result.add(out.ref.strings[i].cast().toDartString()); + } calloc.free(out); - return result; } } @@ -81,12 +80,13 @@ Pointer targetOid(Pointer tag) => Pointer id(Pointer tag) => libgit2.git_tag_id(tag); /// Get the name of a tag. -String name(Pointer tag) => libgit2.git_tag_name(tag).toDartString(); +String name(Pointer tag) => + libgit2.git_tag_name(tag).cast().toDartString(); /// Get the message of a tag. String message(Pointer tag) { final result = libgit2.git_tag_message(tag); - return result == nullptr ? '' : result.toDartString(); + return result == nullptr ? '' : result.cast().toDartString(); } /// Get the tagger (author) of a tag. The returned signature must be freed. @@ -115,8 +115,8 @@ Pointer createAnnotated({ required bool force, }) { final out = calloc(); - final tagNameC = tagName.toChar(); - final messageC = message.toChar(); + final tagNameC = tagName.toNativeUtf8().cast(); + final messageC = message.toNativeUtf8().cast(); final error = libgit2.git_tag_create( out, repoPointer, @@ -155,7 +155,7 @@ Pointer createLightweight({ required bool force, }) { final out = calloc(); - final tagNameC = tagName.toChar(); + final tagNameC = tagName.toNativeUtf8().cast(); final error = libgit2.git_tag_create_lightweight( out, repoPointer, @@ -183,7 +183,7 @@ void delete({ required Pointer repoPointer, required String tagName, }) { - final tagNameC = tagName.toChar(); + final tagNameC = tagName.toNativeUtf8().cast(); final error = libgit2.git_tag_delete(repoPointer, tagNameC); calloc.free(tagNameC); diff --git a/lib/src/bindings/tree.dart b/lib/src/bindings/tree.dart index fa536b3..ca18ba4 100644 --- a/lib/src/bindings/tree.dart +++ b/lib/src/bindings/tree.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Get the id of a tree. @@ -60,7 +59,7 @@ Pointer getByName({ required Pointer treePointer, required String filename, }) { - final filenameC = filename.toChar(); + final filenameC = filename.toNativeUtf8().cast(); final result = libgit2.git_tree_entry_byname(treePointer, filenameC); calloc.free(filenameC); @@ -84,7 +83,7 @@ Pointer getByPath({ required String path, }) { final out = calloc>(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); final error = libgit2.git_tree_entry_bypath(out, rootPointer, pathC); final result = out.value; @@ -108,7 +107,7 @@ Pointer entryId(Pointer entry) => /// Get the filename of a tree entry. String entryName(Pointer entry) => - libgit2.git_tree_entry_name(entry).toDartString(); + libgit2.git_tree_entry_name(entry).cast().toDartString(); /// Get the UNIX file attributes of a tree entry. int entryFilemode(Pointer entry) => diff --git a/lib/src/bindings/treebuilder.dart b/lib/src/bindings/treebuilder.dart index 5819cdb..9ab87aa 100644 --- a/lib/src/bindings/treebuilder.dart +++ b/lib/src/bindings/treebuilder.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Create a new tree builder. The returned tree builder must be freed with @@ -54,7 +53,7 @@ Pointer getByFilename({ required Pointer builderPointer, required String filename, }) { - final filenameC = filename.toChar(); + final filenameC = filename.toNativeUtf8().cast(); final result = libgit2.git_treebuilder_get(builderPointer, filenameC); calloc.free(filenameC); @@ -83,7 +82,7 @@ void add({ required Pointer oidPointer, required int filemode, }) { - final filenameC = filename.toChar(); + final filenameC = filename.toNativeUtf8().cast(); final error = libgit2.git_treebuilder_insert( nullptr, builderPointer, @@ -106,7 +105,7 @@ void remove({ required Pointer builderPointer, required String filename, }) { - final filenameC = filename.toChar(); + final filenameC = filename.toNativeUtf8().cast(); final error = libgit2.git_treebuilder_remove(builderPointer, filenameC); calloc.free(filenameC); diff --git a/lib/src/bindings/worktree.dart b/lib/src/bindings/worktree.dart index 663c1f2..2daa0ae 100644 --- a/lib/src/bindings/worktree.dart +++ b/lib/src/bindings/worktree.dart @@ -4,7 +4,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/error.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; /// Add a new working tree. The returned worktree must be freed with [free]. @@ -21,8 +20,8 @@ Pointer create({ Pointer? refPointer, }) { final out = calloc>(); - final nameC = name.toChar(); - final pathC = path.toChar(); + final nameC = name.toNativeUtf8().cast(); + final pathC = path.toNativeUtf8().cast(); final opts = calloc(); libgit2.git_worktree_add_options_init(opts, GIT_WORKTREE_ADD_OPTIONS_VERSION); @@ -57,7 +56,7 @@ Pointer lookup({ required String name, }) { final out = calloc>(); - final nameC = name.toChar(); + final nameC = name.toNativeUtf8().cast(); final error = libgit2.git_worktree_lookup(out, repoPointer, nameC); final result = out.value; @@ -112,7 +111,8 @@ List list(Pointer repo) { throw LibGit2Error(libgit2.git_error_last()); } else { final result = [ - for (var i = 0; i < out.ref.count; i++) out.ref.strings[i].toDartString() + for (var i = 0; i < out.ref.count; i++) + out.ref.strings[i].cast().toDartString() ]; calloc.free(out); @@ -123,12 +123,12 @@ List list(Pointer repo) { /// Retrieve the name of the worktree. String name(Pointer wt) { - return libgit2.git_worktree_name(wt).toDartString(); + return libgit2.git_worktree_name(wt).cast().toDartString(); } /// Retrieve the filesystem path for the worktree. String path(Pointer wt) { - return libgit2.git_worktree_path(wt).toDartString(); + return libgit2.git_worktree_path(wt).cast().toDartString(); } /// Check if worktree is locked. diff --git a/lib/src/blame.dart b/lib/src/blame.dart index d01ab57..b1f02e3 100644 --- a/lib/src/blame.dart +++ b/lib/src/blame.dart @@ -2,10 +2,10 @@ import 'dart:collection'; import 'dart:ffi'; import 'package:equatable/equatable.dart'; +import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/blame.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:meta/meta.dart'; class Blame with IterableMixin { @@ -174,7 +174,8 @@ class BlameHunk extends Equatable { /// Path to the file where this hunk originated, as of the commit specified by /// [originCommitOid]. - String get originPath => _blameHunkPointer.ref.orig_path.toDartString(); + String get originPath => + _blameHunkPointer.ref.orig_path.cast().toDartString(); @override String toString() { diff --git a/lib/src/config.dart b/lib/src/config.dart index 7ccce28..2a63645 100644 --- a/lib/src/config.dart +++ b/lib/src/config.dart @@ -7,7 +7,6 @@ import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/config.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; import 'package:meta/meta.dart'; @@ -99,8 +98,8 @@ class Config with IterableMixin { configPointer: _configPointer, variable: variable, ); - final name = entryPointer.ref.name.toDartString(); - final value = entryPointer.ref.value.toDartString(); + final name = entryPointer.ref.name.cast().toDartString(); + final value = entryPointer.ref.value.cast().toDartString(); final includeDepth = entryPointer.ref.include_depth; final level = GitConfigLevel.values.firstWhere( (e) => entryPointer.ref.level == e.value, @@ -265,8 +264,8 @@ class _ConfigIterator implements Iterator { } else { error = libgit2.git_config_next(entry, _iteratorPointer); if (error != -31) { - final name = entry.value.ref.name.toDartString(); - final value = entry.value.ref.value.toDartString(); + final name = entry.value.ref.name.cast().toDartString(); + final value = entry.value.ref.value.cast().toDartString(); final includeDepth = entry.value.ref.include_depth; final level = GitConfigLevel.values.firstWhere( (e) => entry.value.ref.level == e.value, diff --git a/lib/src/diff.dart b/lib/src/diff.dart index 9ca2605..d8c6c9e 100644 --- a/lib/src/diff.dart +++ b/lib/src/diff.dart @@ -1,10 +1,10 @@ import 'dart:ffi'; import 'package:equatable/equatable.dart'; +import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/diff.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; import 'package:meta/meta.dart'; @@ -546,7 +546,7 @@ class DiffFile extends Equatable { Oid get oid => Oid.fromRaw(_diffFile.id); /// Path to the entry relative to the working directory of the repository. - String get path => _diffFile.path.toDartString(); + String get path => _diffFile.path.cast().toDartString(); /// Size of the entry in bytes. int get size => _diffFile.size; diff --git a/lib/src/error.dart b/lib/src/error.dart index 97eec9b..83cac80 100644 --- a/lib/src/error.dart +++ b/lib/src/error.dart @@ -1,8 +1,8 @@ // coverage:ignore-file import 'dart:ffi'; +import 'package:ffi/ffi.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; /// Details of the last error that occurred. class LibGit2Error { @@ -11,5 +11,7 @@ class LibGit2Error { final Pointer _errorPointer; @override - String toString() => _errorPointer.ref.message.toDartString(); + String toString() { + return _errorPointer.ref.message.cast().toDartString(); + } } diff --git a/lib/src/extensions.dart b/lib/src/extensions.dart deleted file mode 100644 index 9f12e06..0000000 --- a/lib/src/extensions.dart +++ /dev/null @@ -1,36 +0,0 @@ -// coverage:ignore-file - -import 'dart:ffi'; - -import 'package:ffi/ffi.dart'; -import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; - -extension IsValidSHA on String { - bool isValidSHA() { - final hexRegExp = RegExp(r'^[0-9a-fA-F]+$'); - return hexRegExp.hasMatch(this) && - (GIT_OID_MINPREFIXLEN <= length && GIT_OID_HEXSZ >= length); - } -} - -extension ToChar on String { - /// Creates a zero-terminated [Utf8] code-unit array from this String, - /// casts it to the C `char` type and returns allocated pointer to result. - Pointer toChar() => toNativeUtf8().cast(); -} - -extension ToDartString on Pointer { - /// Converts this UTF-8 encoded string to a Dart string. - /// - /// Decodes the UTF-8 code units of this zero-terminated byte array as - /// Unicode code points and creates a Dart string containing those code - /// points. - /// - /// If [length] is provided, zero-termination is ignored and the result can - /// contain NUL characters. - /// - /// If [length] is not provided, the returned string is the string up til but - /// not including the first NUL character. - String toDartString({int? length}) => - cast().toDartString(length: length); -} diff --git a/lib/src/index.dart b/lib/src/index.dart index 63edaad..d74eaf3 100644 --- a/lib/src/index.dart +++ b/lib/src/index.dart @@ -2,10 +2,10 @@ import 'dart:collection'; import 'dart:ffi'; import 'package:equatable/equatable.dart'; +import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/index.dart' as bindings; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:meta/meta.dart'; class Index with IterableMixin { @@ -345,9 +345,10 @@ class IndexEntry extends Equatable { set oid(Oid oid) => _indexEntryPointer.ref.id = oid.pointer.ref; /// Path of the index entry. - String get path => _indexEntryPointer.ref.path.toDartString(); + String get path => _indexEntryPointer.ref.path.cast().toDartString(); - set path(String path) => _indexEntryPointer.ref.path = path.toChar(); + set path(String path) => + _indexEntryPointer.ref.path = path.toNativeUtf8().cast(); /// UNIX file attributes of a index entry. GitFilemode get mode { diff --git a/lib/src/libgit2.dart b/lib/src/libgit2.dart index 44245fa..29ab98d 100644 --- a/lib/src/libgit2.dart +++ b/lib/src/libgit2.dart @@ -3,7 +3,6 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; class Libgit2 { @@ -103,7 +102,7 @@ class Libgit2 { final out = calloc(); libgit2Opts.git_libgit2_opts_get_search_path(level.value, out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -130,7 +129,7 @@ class Libgit2 { }) { libgit2.git_libgit2_init(); - final pathC = path?.toChar() ?? nullptr; + final pathC = path?.toNativeUtf8().cast() ?? nullptr; libgit2Opts.git_libgit2_opts_set_search_path(level.value, pathC); calloc.free(pathC); } @@ -202,7 +201,7 @@ class Libgit2 { final out = calloc(); libgit2Opts.git_libgit2_opts_get_template_path(out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -213,7 +212,7 @@ class Libgit2 { static set templatePath(String path) { libgit2.git_libgit2_init(); - final pathC = path.toChar(); + final pathC = path.toNativeUtf8().cast(); libgit2Opts.git_libgit2_opts_set_template_path(pathC); calloc.free(pathC); @@ -235,8 +234,8 @@ class Libgit2 { } else { libgit2.git_libgit2_init(); - final fileC = file?.toChar() ?? nullptr; - final pathC = path?.toChar() ?? nullptr; + final fileC = file?.toNativeUtf8().cast() ?? nullptr; + final pathC = path?.toNativeUtf8().cast() ?? nullptr; libgit2Opts.git_libgit2_opts_set_ssl_cert_locations(fileC, pathC); @@ -254,7 +253,7 @@ class Libgit2 { final out = calloc(); libgit2Opts.git_libgit2_opts_get_user_agent(out); - final result = out.ref.ptr.toDartString(length: out.ref.size); + final result = out.ref.ptr.cast().toDartString(length: out.ref.size); libgit2.git_buf_dispose(out); calloc.free(out); @@ -265,7 +264,7 @@ class Libgit2 { static set userAgent(String userAgent) { libgit2.git_libgit2_init(); - final userAgentC = userAgent.toChar(); + final userAgentC = userAgent.toNativeUtf8().cast(); libgit2Opts.git_libgit2_opts_set_user_agent(userAgentC); calloc.free(userAgentC); @@ -484,7 +483,7 @@ class Libgit2 { final result = [ for (var i = 0; i < array.ref.count; i++) - array.ref.strings.elementAt(i).value.toDartString() + array.ref.strings.elementAt(i).value.cast().toDartString() ]; calloc.free(array); @@ -497,7 +496,7 @@ class Libgit2 { final array = calloc>(extensions.length); for (var i = 0; i < extensions.length; i++) { - array[i] = extensions[i].toChar(); + array[i] = extensions[i].toNativeUtf8().cast(); } libgit2Opts.git_libgit2_opts_set_extensions(array, extensions.length); diff --git a/lib/src/note.dart b/lib/src/note.dart index 1dd874b..6ba83c2 100644 --- a/lib/src/note.dart +++ b/lib/src/note.dart @@ -114,17 +114,9 @@ class Note extends Equatable { /// Returns list of notes for [repo]sitory. /// - /// [notesRef] is the canonical name of the reference to use. Defaults to "refs/notes/commits". - /// /// Throws a [LibGit2Error] if error occured. - static List list( - Repository repo, { - String notesRef = 'refs/notes/commits', - }) { - final notesPointers = bindings.list( - repoPointer: repo.pointer, - notesRef: notesRef, - ); + static List list(Repository repo) { + final notesPointers = bindings.list(repo.pointer); return notesPointers .map( (e) => Note( diff --git a/lib/src/oid.dart b/lib/src/oid.dart index ceca4b1..74a794c 100644 --- a/lib/src/oid.dart +++ b/lib/src/oid.dart @@ -5,7 +5,7 @@ import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/odb.dart' as odb_bindings; import 'package:libgit2dart/src/bindings/oid.dart' as bindings; -import 'package:libgit2dart/src/extensions.dart'; +import 'package:libgit2dart/src/util.dart'; import 'package:meta/meta.dart'; @immutable @@ -24,7 +24,7 @@ class Oid extends Equatable { /// /// Throws a [LibGit2Error] if error occured. Oid.fromSHA({required Repository repo, required String sha}) { - if (sha.isValidSHA()) { + if (isValidShaHex(sha)) { if (sha.length == 40) { _oidPointer = bindings.fromSHA(sha); } else { diff --git a/lib/src/signature.dart b/lib/src/signature.dart index c533191..fb410ed 100644 --- a/lib/src/signature.dart +++ b/lib/src/signature.dart @@ -1,10 +1,9 @@ import 'dart:ffi'; - import 'package:equatable/equatable.dart'; +import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; import 'package:libgit2dart/src/bindings/libgit2_bindings.dart'; import 'package:libgit2dart/src/bindings/signature.dart' as bindings; -import 'package:libgit2dart/src/extensions.dart'; import 'package:libgit2dart/src/util.dart'; import 'package:meta/meta.dart'; @@ -65,10 +64,10 @@ class Signature extends Equatable { Pointer get pointer => _signaturePointer; /// Full name of the author. - String get name => _signaturePointer.ref.name.toDartString(); + String get name => _signaturePointer.ref.name.cast().toDartString(); /// Email of the author. - String get email => _signaturePointer.ref.email.toDartString(); + String get email => _signaturePointer.ref.email.cast().toDartString(); /// Time in seconds from epoch. int get time => _signaturePointer.ref.when.time; diff --git a/lib/src/util.dart b/lib/src/util.dart index 11ae887..91b562a 100644 --- a/lib/src/util.dart +++ b/lib/src/util.dart @@ -88,3 +88,9 @@ DynamicLibrary loadLibrary(String name) { final libgit2 = Libgit2(loadLibrary(getLibName())); final libgit2Opts = Libgit2Opts(loadLibrary(getLibName())); + +bool isValidShaHex(String str) { + final hexRegExp = RegExp(r'^[0-9a-fA-F]+$'); + return hexRegExp.hasMatch(str) && + (GIT_OID_MINPREFIXLEN <= str.length && GIT_OID_HEXSZ >= str.length); +}