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}