From a4d202ed7b025331ee4a63ebc38f62519cee4750 Mon Sep 17 00:00:00 2001 From: Vladimir Buzuev <44682889+vladimir-buzuev@users.noreply.github.com> Date: Sat, 3 Apr 2021 16:52:34 -0700 Subject: Git repository item path (#757) add wrapper for `git_repository_item_path` --- repository.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'repository.go') diff --git a/repository.go b/repository.go index a6eb7f1..cb82fc3 100644 --- a/repository.go +++ b/repository.go @@ -739,5 +739,39 @@ func (r *Repository) RemoveMessage() error { if cErr < 0 { return MakeGitError(cErr) } - return nil + return nil +} + +type RepositoryItem int + +const ( + RepositoryItemGitDir RepositoryItem = C.GIT_REPOSITORY_ITEM_GITDIR + RepositoryItemWorkDir RepositoryItem = C.GIT_REPOSITORY_ITEM_WORKDIR + RepositoryItemCommonDir RepositoryItem = C.GIT_REPOSITORY_ITEM_COMMONDIR + RepositoryItemIndex RepositoryItem = C.GIT_REPOSITORY_ITEM_INDEX + RepositoryItemObjects RepositoryItem = C.GIT_REPOSITORY_ITEM_OBJECTS + RepositoryItemRefs RepositoryItem = C.GIT_REPOSITORY_ITEM_REFS + RepositoryItemPackedRefs RepositoryItem = C.GIT_REPOSITORY_ITEM_PACKED_REFS + RepositoryItemRemotes RepositoryItem = C.GIT_REPOSITORY_ITEM_REMOTES + RepositoryItemConfig RepositoryItem = C.GIT_REPOSITORY_ITEM_CONFIG + RepositoryItemInfo RepositoryItem = C.GIT_REPOSITORY_ITEM_INFO + RepositoryItemHooks RepositoryItem = C.GIT_REPOSITORY_ITEM_HOOKS + RepositoryItemLogs RepositoryItem = C.GIT_REPOSITORY_ITEM_LOGS + RepositoryItemModules RepositoryItem = C.GIT_REPOSITORY_ITEM_MODULES + RepositoryItemWorkTrees RepositoryItem = C.GIT_REPOSITORY_ITEM_WORKTREES +) + +func (r *Repository) ItemPath(item RepositoryItem) (string, error) { + var c_buf C.git_buf + defer C.git_buf_dispose(&c_buf) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ret := C.git_repository_item_path(&c_buf, r.ptr, C.git_repository_item_t(item)) + runtime.KeepAlive(r) + if ret < 0 { + return "", MakeGitError(ret) + } + return C.GoString(c_buf.ptr), nil } -- cgit v1.2.3