#8 Checkout, auth. #16
@ -3,8 +3,9 @@ branches:
|
|||||||
source:
|
source:
|
||||||
type: gitea
|
type: gitea
|
||||||
apiurl: git.unistack.org
|
apiurl: git.unistack.org
|
||||||
|
repository: pkgdash
|
||||||
update_opt:
|
update_opt:
|
||||||
pre: false
|
pre: false
|
||||||
major: false
|
major: false
|
||||||
up_major: false
|
up_major: false
|
||||||
cached: true
|
cached: true
|
@ -105,13 +105,18 @@ func (g *Gitea) RequestOpen(ctx context.Context, branch string, path string, mod
|
|||||||
}
|
}
|
||||||
//извлекаем ссылки с объектами из удаленного объекта??
|
//извлекаем ссылки с объектами из удаленного объекта??
|
||||||
if err = repo.FetchContext(ctx, &git.FetchOptions{
|
if err = repo.FetchContext(ctx, &git.FetchOptions{
|
||||||
// Auth: &httpauth.BasicAuth{Username: g.Username, Password: g.Password},
|
Auth: &httpauth.BasicAuth{Username: g.Username, Password: g.Password},
|
||||||
Force: true,
|
Force: true,
|
||||||
}); err != nil && err != git.NoErrAlreadyUpToDate {
|
}); err != nil && err != git.NoErrAlreadyUpToDate {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to fetch repo : %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to fetch repo : %v", err))
|
||||||
} //обновляем репозиторий
|
} //обновляем репозиторий
|
||||||
|
|
||||||
var headRef *plumbing.Reference // вроде ссылка на гит
|
var headRef, baseRef *plumbing.Reference // вроде ссылка на гит
|
||||||
|
|
||||||
|
baseRef, err = repo.Head()
|
||||||
|
if err != nil {
|
||||||
|
logger.Fatal(ctx, fmt.Sprintf("Error head: %s", err))
|
||||||
|
}
|
||||||
refIter, err := repo.Branches() //получение веток
|
refIter, err := repo.Branches() //получение веток
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to get branches: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to get branches: %v", err))
|
||||||
@ -140,12 +145,14 @@ func (g *Gitea) RequestOpen(ctx context.Context, branch string, path string, mod
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
||||||
}
|
}
|
||||||
defer checkout(wtree, *headRef)
|
defer checkout(wtree, *baseRef)
|
||||||
|
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil && err != ErrPRNotExist {
|
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
||||||
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
if err != nil && err != ErrPRNotExist {
|
||||||
return err
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pull := range g.pulls {
|
for _, pull := range g.pulls {
|
||||||
@ -270,7 +277,7 @@ func (g *Gitea) RequestOpen(ctx context.Context, branch string, path string, mod
|
|||||||
}
|
}
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", g.Password)
|
req.Header.Add("Authorization", "Bearer "+g.Password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req)
|
rsp, err := http.DefaultClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -293,16 +300,19 @@ func (g *Gitea) RequestOpen(ctx context.Context, branch string, path string, mod
|
|||||||
|
|
||||||
func (g *Gitea) RequestClose(ctx context.Context, branch string, path string) error {
|
func (g *Gitea) RequestClose(ctx context.Context, branch string, path string) error {
|
||||||
logger.Debug(ctx, fmt.Sprintf("RequestClose start, mod title: %s", path))
|
logger.Debug(ctx, fmt.Sprintf("RequestClose start, mod title: %s", path))
|
||||||
|
var err error
|
||||||
|
|
||||||
pulls, err := GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil {
|
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
||||||
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
if err != nil && err != ErrPRNotExist {
|
||||||
return err
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
prExist := false
|
prExist := false
|
||||||
var b string // Name of the branch to be deleted
|
var b string // Name of the branch to be deleted
|
||||||
for _, pull := range pulls {
|
for _, pull := range g.pulls {
|
||||||
if strings.Contains(pull.Title, path) && pull.Base.Ref == branch {
|
if strings.Contains(pull.Title, path) && pull.Base.Ref == branch {
|
||||||
logger.Info(ctx, fmt.Sprintf("PR for %s exists: %s", path, pull.URL))
|
logger.Info(ctx, fmt.Sprintf("PR for %s exists: %s", path, pull.URL))
|
||||||
prExist = true
|
prExist = true
|
||||||
@ -377,9 +387,12 @@ func (g *Gitea) RequestList(ctx context.Context, branch string) (map[string]stri
|
|||||||
logger.Debug(ctx, fmt.Sprintf("RequestList for %s", branch))
|
logger.Debug(ctx, fmt.Sprintf("RequestList for %s", branch))
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil {
|
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
||||||
return nil, err
|
if err != nil && err != ErrPRNotExist {
|
||||||
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var path string
|
var path string
|
||||||
@ -411,7 +424,7 @@ func DeleteBranch(ctx context.Context, url, owner, repo, branch, password string
|
|||||||
}
|
}
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", password)
|
req.Header.Add("Authorization", "Bearer "+password)
|
||||||
return req, err
|
return req, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,7 +445,7 @@ func GetPulls(ctx context.Context, url, owner, repo, password string) ([]*giteaP
|
|||||||
|
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", password)
|
req.Header.Add("Authorization", "Bearer "+password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -466,7 +479,9 @@ func GetPulls(ctx context.Context, url, owner, repo, password string) ([]*giteaP
|
|||||||
|
|
||||||
func checkout(w *git.Worktree, ref plumbing.Reference) {
|
func checkout(w *git.Worktree, ref plumbing.Reference) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
if err := w.Reset(&git.ResetOptions{Commit: ref.Hash(), Mode: git.HardReset}); err != nil {
|
logger.Debug(ctx, fmt.Sprintf("Checkout: %s", ref.Name().Short()))
|
||||||
|
|
||||||
|
if err := w.Checkout(&git.CheckoutOptions{Hash: ref.Hash()}); err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to reset: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to reset: %v", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,10 +140,12 @@ func (g *Github) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil && err != ErrPRNotExist {
|
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
||||||
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
if err != nil && err != ErrPRNotExist {
|
||||||
return err
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pull := range g.pulls {
|
for _, pull := range g.pulls {
|
||||||
@ -268,7 +270,7 @@ func (g *Github) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
}
|
}
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", g.Password)
|
req.Header.Add("Authorization", "Bearer "+g.Password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req)
|
rsp, err := http.DefaultClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -295,7 +297,28 @@ func (g *Github) RequestUpdate(ctx context.Context, branch string, path string,
|
|||||||
return fmt.Errorf("implement me")
|
return fmt.Errorf("implement me")
|
||||||
}
|
}
|
||||||
func (g *Github) RequestList(ctx context.Context, branch string) (map[string]string, error) {
|
func (g *Github) RequestList(ctx context.Context, branch string) (map[string]string, error) {
|
||||||
return nil, fmt.Errorf("implement me")
|
logger.Debug(ctx, fmt.Sprintf("RequestList for %s", branch))
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if len(g.pulls) == 0 {
|
||||||
|
g.pulls, err = GetPulls(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
||||||
|
if err != nil && err != ErrPRNotExist {
|
||||||
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var path string
|
||||||
|
rMap := make(map[string]string)
|
||||||
|
|
||||||
|
for _, pull := range g.pulls {
|
||||||
|
if !strings.HasPrefix(pull.Title, "Bump ") || pull.Base.Ref != branch { //добавляем только реквесты бота по обновлению модулей
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
path = strings.Split(pull.Title, " ")[1] //todo Работет только для дефолтного шаблона
|
||||||
|
rMap[path] = pull.Title
|
||||||
|
}
|
||||||
|
return rMap, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPulls(ctx context.Context, url, owner, repo, password string) ([]*githubPull, error) {
|
func GetPulls(ctx context.Context, url, owner, repo, password string) ([]*githubPull, error) {
|
||||||
@ -315,7 +338,7 @@ func GetPulls(ctx context.Context, url, owner, repo, password string) ([]*github
|
|||||||
|
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", password)
|
req.Header.Add("Authorization", "Bearer "+password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -10,7 +10,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
"time"
|
"time"
|
||||||
@ -59,11 +58,6 @@ type gitlabPull struct {
|
|||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type gitlabProject struct {
|
|
||||||
Id int64 `json:"id"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *Gitlab) Name() string {
|
func (g *Gitlab) Name() string {
|
||||||
return "gitlab"
|
return "gitlab"
|
||||||
}
|
}
|
||||||
@ -114,12 +108,16 @@ func (g *Gitlab) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
logger.Fatal(ctx, fmt.Sprintf("failed to fetch repo : %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to fetch repo : %v", err))
|
||||||
} //обновляем репозиторий
|
} //обновляем репозиторий
|
||||||
|
|
||||||
var headRef *plumbing.Reference // вроде ссылка на гит
|
var headRef, baseRef *plumbing.Reference // вроде ссылка на гит
|
||||||
|
|
||||||
|
baseRef, err = repo.Head()
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(ctx, fmt.Sprintf("Error head: %s", err))
|
||||||
|
}
|
||||||
|
|
||||||
refIter, err := repo.Branches() //получение веток
|
refIter, err := repo.Branches() //получение веток
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to get branches: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to get branches: %v", err))
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
ref, err := refIter.Next()
|
ref, err := refIter.Next()
|
||||||
@ -144,17 +142,14 @@ func (g *Gitlab) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to get worktree: %v", err))
|
||||||
}
|
}
|
||||||
defer checkout(wtree, *headRef)
|
defer checkout(wtree, *baseRef)
|
||||||
|
|
||||||
g.RepositoryId, err = GetRepoID(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil || g.RepositoryId == "" {
|
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
||||||
return fmt.Errorf("project id is empty")
|
if err != nil && err != ErrPRNotExist {
|
||||||
}
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return err
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
}
|
||||||
if err != nil && err != ErrPRNotExist {
|
|
||||||
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pull := range g.pulls {
|
for _, pull := range g.pulls {
|
||||||
@ -282,7 +277,7 @@ func (g *Gitlab) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
}
|
}
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", g.Password)
|
req.Header.Add("Authorization", "Bearer "+g.Password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req)
|
rsp, err := http.DefaultClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -300,23 +295,19 @@ func (g *Gitlab) RequestOpen(ctx context.Context, branch string, path string, mo
|
|||||||
|
|
||||||
func (g *Gitlab) RequestClose(ctx context.Context, branch string, path string) error {
|
func (g *Gitlab) RequestClose(ctx context.Context, branch string, path string) error {
|
||||||
logger.Debug(ctx, fmt.Sprintf("RequestClose start, mod title: %s", path))
|
logger.Debug(ctx, fmt.Sprintf("RequestClose start, mod title: %s", path))
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
g.RepositoryId, err = GetRepoID(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil || g.RepositoryId == "" {
|
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
||||||
return fmt.Errorf("project id is empty")
|
if err != nil && err != ErrPRNotExist {
|
||||||
}
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return err
|
||||||
pulls, err := GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
}
|
||||||
if err != nil {
|
|
||||||
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prExist := false
|
prExist := false
|
||||||
var b string // Name of the branch to be deleted
|
var b string // Name of the branch to be deleted
|
||||||
for _, pull := range pulls {
|
for _, pull := range g.pulls {
|
||||||
if strings.Contains(pull.Title, path) {
|
if strings.Contains(pull.Title, path) {
|
||||||
logger.Info(ctx, fmt.Sprintf("PR for %s exists: %s", path, pull.URL))
|
logger.Info(ctx, fmt.Sprintf("PR for %s exists: %s", path, pull.URL))
|
||||||
prExist = true
|
prExist = true
|
||||||
@ -347,11 +338,6 @@ func (g *Gitlab) RequestUpdate(ctx context.Context, branch string, path string,
|
|||||||
logger.Debug(ctx, fmt.Sprintf("RequestUpdate start, mod title: %s", path))
|
logger.Debug(ctx, fmt.Sprintf("RequestUpdate start, mod title: %s", path))
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
g.RepositoryId, err = GetRepoID(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
|
||||||
if err != nil || g.RepositoryId == "" {
|
|
||||||
return fmt.Errorf("project id is empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(g.pulls) == 0 {
|
if len(g.pulls) == 0 {
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -396,14 +382,12 @@ func (g *Gitlab) RequestList(ctx context.Context, branch string) (map[string]str
|
|||||||
logger.Debug(ctx, fmt.Sprintf("RequestList for %s", branch))
|
logger.Debug(ctx, fmt.Sprintf("RequestList for %s", branch))
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
g.RepositoryId, err = GetRepoID(ctx, g.URL, g.Owner, g.Repository, g.Password)
|
if len(g.pulls) == 0 {
|
||||||
if err != nil || g.RepositoryId == "" {
|
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
||||||
return nil, fmt.Errorf("project id is empty")
|
if err != nil && err != ErrPRNotExist {
|
||||||
}
|
logger.Error(ctx, fmt.Sprintf("GetPulls error: %s", err))
|
||||||
|
return nil, err
|
||||||
g.pulls, err = GetPulls(ctx, g.URL, g.RepositoryId, branch, g.Password)
|
}
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var path string
|
var path string
|
||||||
@ -435,7 +419,7 @@ func DeleteBranch(ctx context.Context, url, projectId, branch, password string)
|
|||||||
}
|
}
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", password)
|
req.Header.Add("Authorization", "Bearer "+password)
|
||||||
return req, err
|
return req, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,7 +436,7 @@ func GetPulls(ctx context.Context, url, projectId, branch, password string) ([]*
|
|||||||
|
|
||||||
req.Header.Add("Accept", "application/json")
|
req.Header.Add("Accept", "application/json")
|
||||||
req.Header.Add("Content-Type", "application/json")
|
req.Header.Add("Content-Type", "application/json")
|
||||||
req.Header.Add("Authorization", password)
|
req.Header.Add("Authorization", "Bearer "+password)
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
rsp, err := http.DefaultClient.Do(req) // выполнение запроса
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -476,43 +460,11 @@ func GetPulls(ctx context.Context, url, projectId, branch, password string) ([]*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetRepoID(ctx context.Context, url, owner, repo, password string) (rId string, err error) {
|
|
||||||
var buf []byte
|
|
||||||
projects := make([]*gitlabProject, 0, 10)
|
|
||||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, fmt.Sprintf("https://%s/api/v4/users/%s/projects?owned=true", url, owner), nil)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
req.Header.Add("Accept", "application/json")
|
|
||||||
req.Header.Add("Content-Type", "application/json")
|
|
||||||
req.Header.Add("Authorization", password)
|
|
||||||
|
|
||||||
rsp, err := http.DefaultClient.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
buf, _ = io.ReadAll(rsp.Body)
|
|
||||||
|
|
||||||
switch rsp.StatusCode {
|
|
||||||
case http.StatusOK:
|
|
||||||
if err = json.Unmarshal(buf, &projects); err != nil {
|
|
||||||
logger.Error(ctx, fmt.Sprintf("failed to decode response %s err: %v", buf, err))
|
|
||||||
}
|
|
||||||
for _, p := range projects {
|
|
||||||
if p.Name == repo {
|
|
||||||
rId = strconv.Itoa(int(p.Id))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
default:
|
|
||||||
return rId, fmt.Errorf("unknown error: %s", buf)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkout(w *git.Worktree, ref plumbing.Reference) {
|
func checkout(w *git.Worktree, ref plumbing.Reference) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
if err := w.Reset(&git.ResetOptions{Commit: ref.Hash(), Mode: git.HardReset}); err != nil {
|
logger.Debug(ctx, fmt.Sprintf("Checkout: %s", ref.Name().Short()))
|
||||||
|
|
||||||
|
if err := w.Checkout(&git.CheckoutOptions{Hash: ref.Hash()}); err != nil {
|
||||||
logger.Fatal(ctx, fmt.Sprintf("failed to reset: %v", err))
|
logger.Fatal(ctx, fmt.Sprintf("failed to reset: %v", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user