user_create.go

 1package commands
 2
 3import (
 4	"github.com/spf13/cobra"
 5
 6	"github.com/MichaelMure/git-bug/input"
 7)
 8
 9func newUserCreateCommand() *cobra.Command {
10	env := newEnv()
11
12	cmd := &cobra.Command{
13		Use:      "create",
14		Short:    "Create a new identity.",
15		PreRunE:  loadBackend(env),
16		PostRunE: closeBackend(env),
17		RunE: func(cmd *cobra.Command, args []string) error {
18			return runUserCreate(env)
19		},
20	}
21
22	return cmd
23}
24
25func runUserCreate(env *Env) error {
26	preName, err := env.backend.GetUserName()
27	if err != nil {
28		return err
29	}
30
31	name, err := input.PromptDefault("Name", "name", preName, input.Required)
32	if err != nil {
33		return err
34	}
35
36	preEmail, err := env.backend.GetUserEmail()
37	if err != nil {
38		return err
39	}
40
41	email, err := input.PromptDefault("Email", "email", preEmail, input.Required)
42	if err != nil {
43		return err
44	}
45
46	avatarURL, err := input.Prompt("Avatar URL", "avatar")
47	if err != nil {
48		return err
49	}
50
51	id, err := env.backend.NewIdentityRaw(name, email, "", avatarURL, nil, nil)
52	if err != nil {
53		return err
54	}
55
56	err = id.CommitAsNeeded()
57	if err != nil {
58		return err
59	}
60
61	set, err := env.backend.IsUserIdentitySet()
62	if err != nil {
63		return err
64	}
65
66	if !set {
67		err = env.backend.SetUserIdentity(id)
68		if err != nil {
69			return err
70		}
71	}
72
73	env.err.Println()
74	env.out.Println(id.Id())
75
76	return nil
77}