Begin support for Gitea
This commit is contained in:
30
internal/remotes/gitea/gitea.go
Normal file
30
internal/remotes/gitea/gitea.go
Normal file
@ -0,0 +1,30 @@
|
||||
package gitearemote
|
||||
|
||||
import (
|
||||
"code.gitea.io/sdk/gitea"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/remote"
|
||||
)
|
||||
|
||||
type GiteaRemote struct {
|
||||
info *remote.RemoteInfo
|
||||
api *gitea.Client
|
||||
}
|
||||
|
||||
func (r *GiteaRemote) GetInfo() *remote.RemoteInfo {
|
||||
return r.info
|
||||
}
|
||||
|
||||
func NewGiteaRemote(remoteInfo *remote.RemoteInfo) (*GiteaRemote, error) {
|
||||
client, err := gitea.NewClient(remoteInfo.Host, gitea.SetContext(remoteInfo.Ctx))
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
giteaRemote := &GiteaRemote{
|
||||
info: remoteInfo,
|
||||
api: client,
|
||||
}
|
||||
|
||||
return giteaRemote, nil
|
||||
}
|
56
internal/remotes/gitea/gitea_api.go
Normal file
56
internal/remotes/gitea/gitea_api.go
Normal file
@ -0,0 +1,56 @@
|
||||
package gitearemote
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/load"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/remote"
|
||||
)
|
||||
|
||||
const giteaReposPerPage = 20
|
||||
|
||||
func (r *GiteaRemote) GetNumProjects(opts *remote.RemoteQueryOpts) int {
|
||||
var projects int
|
||||
_, resp, err := r.api.SearchRepos(gitea.SearchRepoOptions{ListOptions: gitea.ListOptions{PageSize: 1}})
|
||||
if err != nil {
|
||||
return -1
|
||||
}
|
||||
|
||||
fmt.Println(resp)
|
||||
|
||||
return projects
|
||||
}
|
||||
|
||||
func (r *GiteaRemote) StreamProjects(pi *load.ProgressInfo, opts *remote.RemoteQueryOpts) {
|
||||
defer close(pi.ProgressChan)
|
||||
defer close(pi.ProjectsChan)
|
||||
|
||||
// Get projects. TODO support concurrency
|
||||
giteaListOpts := gitea.ListOptions{Page: 1, PageSize: giteaReposPerPage}
|
||||
|
||||
for {
|
||||
repos, resp, err := r.api.ListMyRepos(gitea.ListReposOptions{ListOptions: giteaListOpts})
|
||||
|
||||
fmt.Printf("Gitea PrevPage %d, NextPage %d, Pages %d\n", resp.PrevPage, resp.NextPage, resp.LastPage)
|
||||
|
||||
if err != nil {
|
||||
pi.ErrorChan <- err
|
||||
break
|
||||
} else if resp.NextPage == resp.PrevPage {
|
||||
break
|
||||
} else if len(repos) < 1 {
|
||||
pi.ErrorChan <- errors.New("No gitea repos found")
|
||||
break
|
||||
}
|
||||
|
||||
for _, repo := range repos {
|
||||
fmt.Println(repo)
|
||||
}
|
||||
|
||||
giteaListOpts.Page = resp.NextPage
|
||||
}
|
||||
|
||||
pi.DoneChan <- nil
|
||||
}
|
Reference in New Issue
Block a user