summaryrefslogtreecommitdiff
path: root/status.go
diff options
context:
space:
mode:
Diffstat (limited to 'status.go')
-rw-r--r--status.go26
1 files changed, 17 insertions, 9 deletions
diff --git a/status.go b/status.go
index 5fecdb3..e22f533 100644
--- a/status.go
+++ b/status.go
@@ -27,16 +27,24 @@ const (
StatusIgnored = C.GIT_STATUS_IGNORED
)
-type StatusList struct {
- ptr *C.git_status_list
-}
-
type StatusEntry struct {
Status Status
HeadToIndex DiffDelta
IndexToWorkdir DiffDelta
}
+func statusEntryFromC(statusEntry *C.git_status_entry) StatusEntry {
+ return StatusEntry {
+ Status: Status(statusEntry.status),
+ HeadToIndex: diffDeltaFromC(statusEntry.head_to_index),
+ IndexToWorkdir: diffDeltaFromC(statusEntry.index_to_workdir),
+ }
+}
+
+type StatusList struct {
+ ptr *C.git_status_list
+}
+
func newStatusListFromC(ptr *C.git_status_list) *StatusList {
if ptr == nil {
return nil
@@ -60,10 +68,10 @@ func (statusList *StatusList) Free() error {
return nil
}
-func statusEntryFromC(statusEntry *C.git_status_entry) StatusEntry {
- return StatusEntry {
- Status: Status(statusEntry.status),
- HeadToIndex: diffDeltaFromC(statusEntry.head_to_index),
- IndexToWorkdir: diffDeltaFromC(statusEntry.index_to_workdir),
+func (statusList *StatusList) ByIndex(index int) (StatusEntry, error) {
+ if statusList.ptr == nil {
+ return StatusEntry{}, ErrInvalid
}
+ ptr := C.git_status_byindex(statusList.ptr, C.size_t(index))
+ return statusEntryFromC(ptr), nil
}