user_create.go

 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}