From 864d3ed33597211f22177fce6ecb7e741db795b5 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Wed, 25 Dec 2019 22:55:53 +0100 Subject: 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 --- bridge/gitlab/config.go | 17 ++++++++++++----- bridge/gitlab/import.go | 4 ++++ bridge/gitlab/import_test.go | 3 +++ 3 files changed, 19 insertions(+), 5 deletions(-) (limited to 'bridge/gitlab') 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) -- cgit