aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/gitlab
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-12-25 22:55:53 +0100
committerMichael Muré <batolettre@gmail.com>2019-12-25 23:25:39 +0100
commit864d3ed33597211f22177fce6ecb7e741db795b5 (patch)
tree94ee4e247291de89abd842cd77a39dfb3919fe55 /bridge/gitlab
parente96d8e6771086e20639a16abf6af30f2faa006a0 (diff)
downloadgit-bug-864d3ed33597211f22177fce6ecb7e741db795b5.tar.gz
bridge: allow to configure and pull without having set a user first
- init() only the importer or exporter as required - assign a "default user" user Id to credentials at creation if no user has been set - "bridge auth": also display the user - "bridge auth show": adapt to a potential "default user" user Id - "bridge configure": allow to run without a user set - "bridge pull": allow to run without a user set - "user adopt": replace "default user" by the actual user id when run
Diffstat (limited to 'bridge/gitlab')
-rw-r--r--bridge/gitlab/config.go17
-rw-r--r--bridge/gitlab/import.go4
-rw-r--r--bridge/gitlab/import_test.go3
3 files changed, 19 insertions, 5 deletions
diff --git a/bridge/gitlab/config.go b/bridge/gitlab/config.go
index 99c27836..3a48ec4e 100644
--- a/bridge/gitlab/config.go
+++ b/bridge/gitlab/config.go
@@ -19,6 +19,7 @@ import (
"github.com/MichaelMure/git-bug/bridge/core/auth"
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/entity"
+ "github.com/MichaelMure/git-bug/identity"
"github.com/MichaelMure/git-bug/repository"
"github.com/MichaelMure/git-bug/util/colors"
)
@@ -65,10 +66,16 @@ func (g *Gitlab) Configure(repo *cache.RepoCache, params core.BridgeParams) (cor
}
user, err := repo.GetUserIdentity()
- if err != nil {
+ if err != nil && err != identity.ErrNoIdentitySet {
return nil, err
}
+ // default to a "to be filled" user Id if we don't have a valid one yet
+ userId := auth.DefaultUserId
+ if user != nil {
+ userId = user.Id()
+ }
+
var cred auth.Credential
switch {
@@ -77,13 +84,13 @@ func (g *Gitlab) Configure(repo *cache.RepoCache, params core.BridgeParams) (cor
if err != nil {
return nil, err
}
- if cred.UserId() != user.Id() {
+ if user != nil && cred.UserId() != user.Id() {
return nil, fmt.Errorf("selected credential don't match the user")
}
case params.TokenRaw != "":
- cred = auth.NewToken(user.Id(), params.TokenRaw, target)
+ cred = auth.NewToken(userId, params.TokenRaw, target)
default:
- cred, err = promptTokenOptions(repo, user.Id())
+ cred, err = promptTokenOptions(repo, userId)
if err != nil {
return nil, err
}
@@ -221,7 +228,7 @@ func promptToken() (string, error) {
return token, nil
}
- fmt.Println("token format is invalid")
+ fmt.Println("token has incorrect format")
}
}
diff --git a/bridge/gitlab/import.go b/bridge/gitlab/import.go
index 4fa37505..fa6bbfb6 100644
--- a/bridge/gitlab/import.go
+++ b/bridge/gitlab/import.go
@@ -13,6 +13,7 @@ import (
"github.com/MichaelMure/git-bug/bug"
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/entity"
+ "github.com/MichaelMure/git-bug/identity"
"github.com/MichaelMure/git-bug/util/text"
)
@@ -42,6 +43,9 @@ func (gi *gitlabImporter) Init(repo *cache.RepoCache, conf core.Configuration) e
if err == nil {
opts = append(opts, auth.WithUserId(user.Id()))
}
+ if err == identity.ErrNoIdentitySet {
+ opts = append(opts, auth.WithUserId(auth.DefaultUserId))
+ }
creds, err := auth.List(repo, opts...)
if err != nil {
diff --git a/bridge/gitlab/import_test.go b/bridge/gitlab/import_test.go
index 6e378b07..1e2f5d50 100644
--- a/bridge/gitlab/import_test.go
+++ b/bridge/gitlab/import_test.go
@@ -97,6 +97,9 @@ func TestImport(t *testing.T) {
err = author.Commit(repo)
require.NoError(t, err)
+ err = identity.SetUserIdentity(repo, author)
+ require.NoError(t, err)
+
token := auth.NewToken(author.Id(), envToken, target)
err = auth.Store(repo, token)
require.NoError(t, err)