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