1
1
mirror of https://github.com/cooperspencer/gickup synced 2024-10-18 13:48:07 +02:00
gickup/bitbucket/bitbucket.go
Andreas Wachter fecb4040e6
added sublogger to gitea (#178)
* added sublogger to gitea

* implemented the rest of the subloggers
2023-10-04 10:55:24 +02:00

113 lines
2.7 KiB
Go

package bitbucket
import (
"net/url"
"time"
"github.com/cooperspencer/gickup/logger"
"github.com/cooperspencer/gickup/types"
"github.com/ktrysmt/go-bitbucket"
"github.com/rs/zerolog"
)
var (
sub zerolog.Logger
)
// Get TODO.
func Get(conf *types.Conf) ([]types.Repo, bool) {
ran := false
repos := []types.Repo{}
for _, repo := range conf.Source.BitBucket {
ran = true
client := bitbucket.NewBasicAuth(repo.Username, repo.Password)
if repo.User == "" {
repo.User = repo.Username
}
if repo.URL == "" {
repo.URL = bitbucket.DEFAULT_BITBUCKET_API_BASE_URL
sub = logger.CreateSubLogger("stage", "bitbucket", "url", repo.URL)
} else {
bitbucketURL, err := url.Parse(repo.URL)
sub = logger.CreateSubLogger("stage", "bitbucket", "url", repo.URL)
if err != nil {
sub.Error().
Msg(err.Error())
continue
}
client.SetApiBaseURL(*bitbucketURL)
}
err := repo.Filter.ParseDuration()
if err != nil {
sub.Error().
Msg(err.Error())
}
sub.Info().
Msgf("grabbing repositories from %s", repo.User)
repositories, err := client.Repositories.ListForAccount(&bitbucket.RepositoriesOptions{Owner: repo.User})
if err != nil {
sub.Error().
Msg(err.Error())
continue
}
include := types.GetMap(repo.Include)
exclude := types.GetMap(repo.Exclude)
for _, r := range repositories.Items {
user := repo.User
if r.Owner != nil {
if _, ok := r.Owner["nickname"]; ok {
user = r.Owner["nickname"].(string)
}
}
if time.Since(*r.UpdatedOnTime) > repo.Filter.LastActivityDuration && repo.Filter.LastActivityDuration != 0 {
continue
}
if include[r.Name] {
repos = append(repos, types.Repo{
Name: r.Name,
URL: r.Links["clone"].([]interface{})[0].(map[string]interface{})["href"].(string),
SSHURL: r.Links["clone"].([]interface{})[1].(map[string]interface{})["href"].(string),
Token: "",
Defaultbranch: r.Mainbranch.Name,
Origin: repo,
Owner: user,
Hoster: types.GetHost(repo.URL),
Description: r.Description,
Private: r.Is_private,
})
continue
}
if exclude[r.Name] {
continue
}
if len(include) == 0 {
repos = append(repos, types.Repo{
Name: r.Name,
URL: r.Links["clone"].([]interface{})[0].(map[string]interface{})["href"].(string),
SSHURL: r.Links["clone"].([]interface{})[1].(map[string]interface{})["href"].(string),
Token: "",
Defaultbranch: r.Mainbranch.Name,
Origin: repo,
Owner: user,
Hoster: types.GetHost(repo.URL),
Description: r.Description,
Private: r.Is_private,
})
}
}
}
return repos, ran
}