// +build ignore package main import "C" /* //export c_Repository func c_Repository() uint64 { repo := &git.Repository{} repo_handle := RegisterObject(repo) return uint64(repo_handle) } //export c_NewRepository func c_NewRepository(url string, auth uint64) (uint64, int, *C.char) { var repo *git.Repository var err error url = CopyString(url) if auth != IH { real_auth, ok := GetObject(Handle(auth)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo, err = git.NewRepository(url, real_auth.(common.AuthMethod)) } else { repo, err = git.NewRepository(url, nil) } if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } repo_handle := RegisterObject(repo) return uint64(repo_handle), ErrorCodeSuccess, nil } //export c_NewPlainRepository func c_NewPlainRepository() uint64 { return uint64(RegisterObject(git.NewPlainRepository())) } //export c_Repository_get_Remotes func c_Repository_get_Remotes(r uint64) uint64 { obj, ok := GetObject(Handle(r)) if !ok { return IH } repo := obj.(*git.Repository) return uint64(RegisterObject(&repo.Remotes)) } //export c_Repository_set_Remotes func c_Repository_set_Remotes(r uint64, val uint64) { obj, ok := GetObject(Handle(r)) if !ok { return } repo := obj.(*git.Repository) obj, ok = GetObject(Handle(val)) if !ok { return } repo.Remotes = *obj.(*map[string]*git.Remote) } //export c_Repository_get_Storage func c_Repository_get_Storage(r uint64) uint64 { obj, ok := GetObject(Handle(r)) if !ok { return IH } repo := obj.(*git.Repository) return uint64(RegisterObject(&repo.Storage)) } //export c_Repository_set_Storage func c_Repository_set_Storage(r uint64, val uint64) { obj, ok := GetObject(Handle(r)) if !ok { return } repo := obj.(*git.Repository) obj, ok = GetObject(Handle(val)) if !ok { return } repo.Storage = *obj.(*core.ObjectStorage) } //export c_Repository_Pull func c_Repository_Pull(r uint64, remoteName, branch string) (int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) err := repo.Pull(remoteName, CopyString(branch)) if err == nil { return ErrorCodeSuccess, nil } return ErrorCodeInternal, C.CString(err.Error()) } //export c_Repository_PullDefault func c_Repository_PullDefault(r uint64) (int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) err := repo.PullDefault() if err == nil { return ErrorCodeSuccess, nil } return ErrorCodeInternal, C.CString(err.Error()) } //export c_Repository_Commit func c_Repository_Commit(r uint64, h []byte) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) var hash core.Hash copy(hash[:], h) commit, err := repo.Commit(hash) if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } commit_handle := RegisterObject(commit) return uint64(commit_handle), ErrorCodeSuccess, nil } //export c_Repository_Commits func c_Repository_Commits(r uint64) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) iter, err := repo.Commits() if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } iter_handle := RegisterObject(iter) return uint64(iter_handle), ErrorCodeSuccess, nil } //export c_Repository_Tree func c_Repository_Tree(r uint64, h []byte) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) var hash core.Hash copy(hash[:], h) tree, err := repo.Tree(hash) if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } tree_handle := RegisterObject(tree) return uint64(tree_handle), ErrorCodeSuccess, nil } //export c_Repository_Blob func c_Repository_Blob(r uint64, h []byte) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) var hash core.Hash copy(hash[:], h) blob, err := repo.Blob(hash) if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } blob_handle := RegisterObject(blob) return uint64(blob_handle), ErrorCodeSuccess, nil } //export c_Repository_Tag func c_Repository_Tag(r uint64, h []byte) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) var hash core.Hash copy(hash[:], h) tag, err := repo.Tag(hash) if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } tag_handle := RegisterObject(tag) return uint64(tag_handle), ErrorCodeSuccess, nil } //export c_Repository_Tags func c_Repository_Tags(r uint64) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) iter, err := repo.Tags() if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } iter_handle := RegisterObject(iter) return uint64(iter_handle), ErrorCodeSuccess, nil } //export c_Repository_Object func c_Repository_Object(r uint64, h []byte) (uint64, int, *C.char) { obj, ok := GetObject(Handle(r)) if !ok { return IH, ErrorCodeNotFound, C.CString(MessageNotFound) } repo := obj.(*git.Repository) var hash core.Hash copy(hash[:], h) robj, err := repo.Object(hash) if err != nil { return IH, ErrorCodeInternal, C.CString(err.Error()) } robj_handle := RegisterObject(robj) return uint64(robj_handle), ErrorCodeSuccess, nil } */