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}