mirror of
https://github.com/cooperspencer/gickup.git
synced 2026-10-19 16:16:46 +00:00
Rework of BitBucket authentication (#402)
* Rework of the BitBucket source authentication: * Renamed 'user' to 'organization' as it better reflects the bitbucket architecture * Added email config field, used fetch the workspace repo list with API token auth * Added error log line in case workspace repo list fetch fails * go-bitbucket version bump to 0.10.0 * fixed linting error * ran go mod tidy to cleanup unused deps
This commit is contained in:
+13
-4
@@ -2,6 +2,7 @@ package bitbucket
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/cooperspencer/gickup/logger"
|
||||
@@ -35,7 +36,7 @@ func Get(conf *types.Conf) ([]types.Repo, bool) {
|
||||
includeorgs := types.GetMap(repo.IncludeOrgs)
|
||||
excludeorgs := types.GetMap(repo.ExcludeOrgs)
|
||||
|
||||
client, err := bitbucket.NewBasicAuth(repo.Username, repo.Password)
|
||||
client, err := bitbucket.NewBasicAuth(repo.Email, repo.Password)
|
||||
|
||||
if repo.URL == "" {
|
||||
repo.URL = bitbucket.DEFAULT_BITBUCKET_API_BASE_URL
|
||||
@@ -64,7 +65,7 @@ func Get(conf *types.Conf) ([]types.Repo, bool) {
|
||||
sub.Info().
|
||||
Msgf("grabbing repositories from %s", repo.User)
|
||||
|
||||
repoRes, err := client.Repositories.ListForAccount(&bitbucket.RepositoriesOptions{Owner: repo.User})
|
||||
repoRes, err := client.Repositories.ListForAccount(&bitbucket.RepositoriesOptions{Owner: repo.Organization})
|
||||
var repositories []bitbucket.Repository
|
||||
if err == nil {
|
||||
repositories = repoRes.Items
|
||||
@@ -95,6 +96,9 @@ func Get(conf *types.Conf) ([]types.Repo, bool) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sub.Error().Msgf("Exiting due to error fetching Bitbucket workspace repositories: %s", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
for _, r := range repositories {
|
||||
@@ -129,13 +133,18 @@ func Get(conf *types.Conf) ([]types.Repo, bool) {
|
||||
continue
|
||||
}
|
||||
|
||||
origin := repo
|
||||
if repo.Username != "" {
|
||||
origin.User = repo.Username
|
||||
}
|
||||
|
||||
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: repo.Token,
|
||||
Origin: repo,
|
||||
Origin: origin,
|
||||
Owner: user,
|
||||
Hoster: types.GetHost(repo.URL),
|
||||
Description: r.Description,
|
||||
@@ -151,7 +160,7 @@ func Get(conf *types.Conf) ([]types.Repo, bool) {
|
||||
URL: r.Links["clone"].([]interface{})[0].(map[string]interface{})["href"].(string),
|
||||
SSHURL: r.Links["clone"].([]interface{})[1].(map[string]interface{})["href"].(string),
|
||||
Token: repo.Token,
|
||||
Origin: repo,
|
||||
Origin: origin,
|
||||
Owner: user,
|
||||
Hoster: types.GetHost(repo.URL),
|
||||
Description: r.Description,
|
||||
|
||||
@@ -16,7 +16,7 @@ require (
|
||||
github.com/google/go-github/v74 v74.0.0
|
||||
github.com/gookit/color v1.6.0
|
||||
github.com/hasura/go-graphql-client v0.16.0
|
||||
github.com/ktrysmt/go-bitbucket v0.9.100
|
||||
github.com/ktrysmt/go-bitbucket v0.10.0
|
||||
github.com/melbahja/goph v1.5.0
|
||||
github.com/minio/minio-go/v7 v7.0.100
|
||||
github.com/prometheus/client_golang v1.23.2
|
||||
@@ -24,7 +24,7 @@ require (
|
||||
github.com/rs/zerolog v1.35.0
|
||||
github.com/shurcooL/githubv4 v0.0.0-20260209031235-2402fdf4a9ed
|
||||
gitlab.com/gitlab-org/api/client-go v1.46.0
|
||||
golang.org/x/crypto v0.50.0
|
||||
golang.org/x/crypto v0.51.0
|
||||
golang.org/x/oauth2 v0.36.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
)
|
||||
@@ -85,9 +85,9 @@ require (
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
|
||||
go.yaml.in/yaml/v2 v2.4.4 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
golang.org/x/net v0.53.0 // indirect
|
||||
golang.org/x/sys v0.43.0 // indirect
|
||||
golang.org/x/text v0.36.0 // indirect
|
||||
golang.org/x/net v0.55.0 // indirect
|
||||
golang.org/x/sys v0.45.0 // indirect
|
||||
golang.org/x/text v0.37.0 // indirect
|
||||
golang.org/x/time v0.15.0 // indirect
|
||||
google.golang.org/protobuf v1.36.11 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
|
||||
@@ -131,8 +131,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/ktrysmt/go-bitbucket v0.9.100 h1:d0CWilBnJ2ywomeH0/1QNULsEUziye/AD0cOEKfCMx4=
|
||||
github.com/ktrysmt/go-bitbucket v0.9.100/go.mod h1:/1H7KMC7FsdkRoNMq21an6dyFpA+irNw5tyYpHzRC2Q=
|
||||
github.com/ktrysmt/go-bitbucket v0.10.0 h1:miXSfqFb+j0pPBB9h8kw9f/oeq045WOPI4hplr996+k=
|
||||
github.com/ktrysmt/go-bitbucket v0.10.0/go.mod h1:IUB8I+gC3UO00NjNTMS7STjsZYq+EAhPuHgynzRWxqY=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||
@@ -213,15 +213,15 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
|
||||
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
|
||||
golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
|
||||
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
|
||||
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
|
||||
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
|
||||
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
||||
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
|
||||
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
|
||||
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
|
||||
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -233,16 +233,16 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
|
||||
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
|
||||
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
|
||||
golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
|
||||
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
|
||||
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
|
||||
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
|
||||
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
|
||||
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
|
||||
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
|
||||
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
||||
@@ -249,6 +249,7 @@ type GenRepo struct {
|
||||
Token string `yaml:"token"`
|
||||
TokenFile string `yaml:"token_file"`
|
||||
User string `yaml:"user"`
|
||||
Email string `yaml:"email"`
|
||||
Organization string `yaml:"organization"`
|
||||
SSH bool `yaml:"ssh"`
|
||||
SSHKey string `yaml:"sshkey"`
|
||||
|
||||
Reference in New Issue
Block a user