Address issue #108 #109
|
@ -0,0 +1,69 @@
|
|||
package git
|
||||
|
||||
/*
|
||||
#include <git2.h>
|
||||
#include <git2/errors.h>
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
)
|
||||
|
||||
type Status int
|
||||
|
||||
const (
|
||||
StatusCurrent Status = C.GIT_STATUS_CURRENT
|
||||
StatusIndexNew = C.GIT_STATUS_INDEX_NEW
|
||||
StatusIndexModified = C.GIT_STATUS_INDEX_MODIFIED
|
||||
StatusIndexDeleted = C.GIT_STATUS_INDEX_DELETED
|
||||
StatusIndexRenamed = C.GIT_STATUS_INDEX_RENAMED
|
||||
StatusIndexTypeChange = C.GIT_STATUS_INDEX_TYPECHANGE
|
||||
StatusWtNew = C.GIT_STATUS_WT_NEW
|
||||
StatusWtModified = C.GIT_STATUS_WT_NEW
|
||||
StatusWtDeleted = C.GIT_STATUS_WT_DELETED
|
||||
StatusWtTypeChange = C.GIT_STATUS_WT_TYPECHANGE
|
||||
StatusWtRenamed = C.GIT_STATUS_WT_RENAMED
|
||||
StatusIgnored = C.GIT_STATUS_IGNORED
|
||||
)
|
||||
|
||||
type StatusList struct {
|
||||
ptr *C.git_status_list
|
||||
}
|
||||
|
||||
type StatusEntry struct {
|
||||
Status Status
|
||||
HeadToIndex DiffDelta
|
||||
IndexToWorkdir DiffDelta
|
||||
}
|
||||
|
||||
func newStatusListFromC(ptr *C.git_status_list) *StatusList {
|
||||
if ptr == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
statusList := &StatusList{
|
||||
ptr: ptr,
|
||||
}
|
||||
|
||||
runtime.SetFinalizer(statusList, (*StatusList).Free)
|
||||
return statusList
|
||||
}
|
||||
|
||||
func (statusList *StatusList) Free() error {
|
||||
if statusList.ptr == nil {
|
||||
return ErrInvalid
|
||||
}
|
||||
runtime.SetFinalizer(statusList, nil)
|
||||
C.git_status_list_free(statusList.ptr)
|
||||
statusList.ptr = nil
|
||||
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),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue