import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'libgit2_bindings.dart'; import '../util.dart'; /// Read the reflog for the given reference. /// /// If there is no reflog file for the given reference yet, an empty reflog /// object will be returned. /// /// The reflog must be freed manually. Pointer read({ required Pointer repoPointer, required String name, }) { final out = calloc>(); final nameC = name.toNativeUtf8().cast(); libgit2.git_reflog_read(out, repoPointer, nameC); calloc.free(nameC); return out.value; } /// Get the number of log entries in a reflog. int entryCount(Pointer reflog) => libgit2.git_reflog_entrycount(reflog); /// Lookup an entry by its index. /// /// Requesting the reflog entry with an index of 0 (zero) will return /// the most recently created entry. Pointer getByIndex({ required Pointer reflogPointer, required int index, }) { return libgit2.git_reflog_entry_byindex(reflogPointer, index); } /// Get the log message. String entryMessage(Pointer entry) { return libgit2.git_reflog_entry_message(entry).cast().toDartString(); } /// Get the committer of this entry. Pointer entryCommiter(Pointer entry) { return libgit2.git_reflog_entry_committer(entry); } /// Free the reflog. void free(Pointer reflog) => libgit2.git_reflog_free(reflog);