1package commands
2
3import (
4 "fmt"
5 "os"
6
7 "github.com/MichaelMure/git-bug/cache"
8 "github.com/MichaelMure/git-bug/input"
9 "github.com/MichaelMure/git-bug/util/interrupt"
10 "github.com/spf13/cobra"
11)
12
13func runUserCreate(cmd *cobra.Command, args []string) error {
14 backend, err := cache.NewRepoCache(repo)
15 if err != nil {
16 return err
17 }
18 defer backend.Close()
19 interrupt.RegisterCleaner(backend.Close)
20
21 preName, err := backend.GetUserName()
22 if err != nil {
23 return err
24 }
25
26 name, err := input.PromptValueRequired("Name", preName)
27 if err != nil {
28 return err
29 }
30
31 preEmail, err := backend.GetUserEmail()
32 if err != nil {
33 return err
34 }
35
36 email, err := input.PromptValueRequired("Email", preEmail)
37 if err != nil {
38 return err
39 }
40
41 login, err := input.PromptValue("Avatar URL", "")
42 if err != nil {
43 return err
44 }
45
46 id, err := backend.NewIdentityRaw(name, email, "", login, nil)
47 if err != nil {
48 return err
49 }
50
51 err = id.CommitAsNeeded()
52 if err != nil {
53 return err
54 }
55
56 err = backend.SetUserIdentity(id)
57 if err != nil {
58 return err
59 }
60
61 _, _ = fmt.Fprintln(os.Stderr)
62 fmt.Println(id.Id())
63
64 return nil
65}
66
67var userCreateCmd = &cobra.Command{
68 Use: "create",
69 Short: "Create a new identity.",
70 PreRunE: loadRepo,
71 RunE: runUserCreate,
72}
73
74func init() {
75 userCmd.AddCommand(userCreateCmd)
76 userCreateCmd.Flags().SortFlags = false
77}