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 _, _ = fmt.Fprintf(os.Stderr, "Before creating a new identity, please be aware that "+
22 "you can also use an already existing one using \"git bug user adopt\". As an example, "+
23 "you can do that if your identity has already been created by an importer.\n\n")
24
25 preName, err := backend.GetUserName()
26 if err != nil {
27 return err
28 }
29
30 name, err := input.PromptValueRequired("Name", preName)
31 if err != nil {
32 return err
33 }
34
35 preEmail, err := backend.GetUserEmail()
36 if err != nil {
37 return err
38 }
39
40 email, err := input.PromptValueRequired("Email", preEmail)
41 if err != nil {
42 return err
43 }
44
45 login, err := input.PromptValue("Avatar URL", "")
46 if err != nil {
47 return err
48 }
49
50 id, err := backend.NewIdentityRaw(name, email, "", login, nil)
51 if err != nil {
52 return err
53 }
54
55 err = id.CommitAsNeeded()
56 if err != nil {
57 return err
58 }
59
60 err = backend.SetUserIdentity(id)
61 if err != nil {
62 return err
63 }
64
65 _, _ = fmt.Fprintln(os.Stderr)
66 fmt.Println(id.Id())
67
68 return nil
69}
70
71var userCreateCmd = &cobra.Command{
72 Use: "create",
73 Short: "Create a new identity",
74 PreRunE: loadRepo,
75 RunE: runUserCreate,
76}
77
78func init() {
79 userCmd.AddCommand(userCreateCmd)
80 userCreateCmd.Flags().SortFlags = false
81}