config.go

 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}