Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 39 additions & 20 deletions commands/user_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,49 +6,68 @@ import (
"github.com/MichaelMure/git-bug/input"
)

type createUserOptions struct {
name string
email string
avatarURL string
}

func newUserCreateCommand() *cobra.Command {
env := newEnv()

options := createUserOptions{}
cmd := &cobra.Command{
Use: "create",
Short: "Create a new identity.",
PreRunE: loadBackend(env),
PostRunE: closeBackend(env),
RunE: func(cmd *cobra.Command, args []string) error {
return runUserCreate(env)
return runUserCreate(env, options)
},
}

flags := cmd.Flags()
flags.StringVarP(&options.name, "name", "n", "", "Name to identify the user")
flags.StringVarP(&options.email, "email", "e", "", "Email of the user")
flags.StringVarP(&options.avatarURL, "avatar", "a", "", "Avatar URL")

return cmd
}

func runUserCreate(env *Env) error {
preName, err := env.backend.GetUserName()
if err != nil {
return err
}
func runUserCreate(env *Env, opts createUserOptions) error {

name, err := input.PromptDefault("Name", "name", preName, input.Required)
if err != nil {
return err
if opts.name == "" {
preName, err := env.backend.GetUserName()
if err != nil {
return err
}
opts.name, err = input.PromptDefault("Name", "name", preName, input.Required)
if err != nil {
return err
}
}

preEmail, err := env.backend.GetUserEmail()
if err != nil {
return err
}
if opts.email == "" {
preEmail, err := env.backend.GetUserEmail()
if err != nil {
return err
}

email, err := input.PromptDefault("Email", "email", preEmail, input.Required)
if err != nil {
return err
opts.email, err = input.PromptDefault("Email", "email", preEmail, input.Required)
if err != nil {
return err
}
}

avatarURL, err := input.Prompt("Avatar URL", "avatar")
if err != nil {
return err
if opts.avatarURL == "" {
var err error
opts.avatarURL, err = input.Prompt("Avatar URL", "avatar")
if err != nil {
return err
}
}

id, err := env.backend.NewIdentityRaw(name, email, "", avatarURL, nil, nil)
id, err := env.backend.NewIdentityRaw(opts.name, opts.email, "", opts.avatarURL, nil, nil)
if err != nil {
return err
}
Expand Down
12 changes: 12 additions & 0 deletions doc/man/git-bug-user-create.1
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,22 @@ Create a new identity.


.SH OPTIONS
.PP
\fB\-a\fP, \fB\-\-avatar\fP=""
Avatar URL

.PP
\fB\-e\fP, \fB\-\-email\fP=""
Email of the user

.PP
\fB\-h\fP, \fB\-\-help\fP[=false]
help for create

.PP
\fB\-n\fP, \fB\-\-name\fP=""
Name to identify the user


.SH SEE ALSO
.PP
Expand Down
5 changes: 4 additions & 1 deletion doc/md/git-bug_user_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ git-bug user create [flags]
### Options

```
-h, --help help for create
-a, --avatar string Avatar URL
-e, --email string Email of the user
-h, --help help for create
-n, --name string Name to identify the user
```

### SEE ALSO
Expand Down
18 changes: 18 additions & 0 deletions misc/bash_completion/git-bug
Original file line number Diff line number Diff line change
Expand Up @@ -1257,6 +1257,24 @@ _git-bug_user_create()
flags_with_completion=()
flags_completion=()

flags+=("--avatar=")
two_word_flags+=("--avatar")
two_word_flags+=("-a")
local_nonpersistent_flags+=("--avatar")
local_nonpersistent_flags+=("--avatar=")
local_nonpersistent_flags+=("-a")
flags+=("--email=")
two_word_flags+=("--email")
two_word_flags+=("-e")
local_nonpersistent_flags+=("--email")
local_nonpersistent_flags+=("--email=")
local_nonpersistent_flags+=("-e")
flags+=("--name=")
two_word_flags+=("--name")
two_word_flags+=("-n")
local_nonpersistent_flags+=("--name")
local_nonpersistent_flags+=("--name=")
local_nonpersistent_flags+=("-n")

must_have_one_flag=()
must_have_one_noun=()
Expand Down