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	set, err := backend.IsUserIdentitySet()
57	if err != nil {
58		return err
59	}
60
61	if !set {
62		err = backend.SetUserIdentity(id)
63		if err != nil {
64			return err
65		}
66	}
67
68	_, _ = fmt.Fprintln(os.Stderr)
69	fmt.Println(id.Id())
70
71	return nil
72}
73
74var userCreateCmd = &cobra.Command{
75	Use:     "create",
76	Short:   "Create a new identity.",
77	PreRunE: loadRepo,
78	RunE:    runUserCreate,
79}
80
81func init() {
82	userCmd.AddCommand(userCreateCmd)
83	userCreateCmd.Flags().SortFlags = false
84}