1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package cmd
- import (
- "errors"
- "fmt"
- "strconv"
- "github.com/jsmartx/giter/store"
- "github.com/jsmartx/giter/util"
- "github.com/urfave/cli"
- )
- func Update(c *cli.Context) error {
- name := c.Args().First()
- if name == "" {
- name = util.Prompt(&util.PromptConfig{
- Prompt: "user name: ",
- })
- }
- s := store.New()
- users := s.List(name, true)
- if len(users) == 0 {
- return errors.New("user not found")
- }
- u := users[0]
- if len(users) > 1 {
- fmt.Printf("There are %d users:\n", len(users))
- for i, item := range users {
- fmt.Printf("%4d) %s\n", i+1, item.String())
- }
- str := util.Prompt(&util.PromptConfig{
- Prompt: "Enter number to select user: ",
- })
- i, err := strconv.Atoi(str)
- if err != nil {
- return err
- }
- if i < 1 || i > len(users) {
- return errors.New("Out of range")
- }
- u = users[i-1]
- }
- email := util.Prompt(&util.PromptConfig{
- Prompt: "user email: ",
- Default: u.Email,
- })
- urlStr := util.Prompt(&util.PromptConfig{
- Prompt: "git server: ",
- Default: u.FullHost(),
- })
- url, err := util.ParseURL(urlStr)
- util.CheckError(err)
- host, port := util.SplitHostPort(url.Host)
- user := &store.User{
- Name: name,
- Email: email,
- Scheme: url.Scheme,
- Host: host,
- Port: port,
- }
- options := &store.Options{}
- if user.IsSSH() {
- if u.IsSSH() {
- txt := util.Prompt(&util.PromptConfig{
- Prompt: fmt.Sprintf("Regenerate the SSH key [Y/n]? "),
- })
- if txt != "y" && txt != "Y" {
- p, err := u.KeyPath()
- if err != nil {
- return err
- }
- options.KeyPath = p
- }
- }
- } else {
- if !u.IsSSH() {
- txt := util.Prompt(&util.PromptConfig{
- Prompt: fmt.Sprintf("Reset password [Y/n]? "),
- })
- if txt == "y" || txt == "Y" {
- pwd := util.Prompt(&util.PromptConfig{
- Prompt: "user password: ",
- Silent: true,
- })
- options.Password = pwd
- }
- } else {
- pwd := util.Prompt(&util.PromptConfig{
- Prompt: "user password: ",
- Silent: true,
- })
- options.Password = pwd
- }
- }
- return s.Update(u.Hash(), user, options)
- }
|