1package core
2
3import (
4 "github.com/MichaelMure/git-bug/cache"
5 "github.com/MichaelMure/git-bug/identity"
6)
7
8func FinishConfig(repo *cache.RepoCache, metaKey string, login string) error {
9 // if no user exist with the given login metadata
10 _, err := repo.ResolveIdentityImmutableMetadata(metaKey, login)
11 if err != nil && err != identity.ErrIdentityNotExist {
12 // real error
13 return err
14 }
15 if err == nil {
16 // found an already valid user, all good
17 return nil
18 }
19
20 // if a default user exist, tag it with the login
21 user, err := repo.GetUserIdentity()
22 if err != nil && err != identity.ErrNoIdentitySet {
23 // real error
24 return err
25 }
26 if err == nil {
27 // found one
28 user.SetMetadata(metaKey, login)
29 return user.CommitAsNeeded()
30 }
31
32 // otherwise create a user with that metadata
33 i, err := repo.NewIdentityFromGitUserRaw(map[string]string{
34 metaKey: login,
35 })
36
37 err = repo.SetUserIdentity(i)
38 if err != nil {
39 return err
40 }
41
42 return nil
43}