delete.go 1013 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package cmd
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/jsmartx/giter/store"
  6. "github.com/jsmartx/giter/util"
  7. "github.com/urfave/cli"
  8. "strconv"
  9. )
  10. func Delete(c *cli.Context) error {
  11. name := c.Args().First()
  12. if name == "" {
  13. name = util.Prompt(&util.PromptConfig{
  14. Prompt: "user name: ",
  15. })
  16. }
  17. s := store.New()
  18. users := s.List(name, true)
  19. if len(users) == 0 {
  20. return errors.New("User not found!")
  21. }
  22. u := users[0]
  23. if len(users) > 1 {
  24. fmt.Printf("There are %d users:\n", len(users))
  25. for i, item := range users {
  26. fmt.Printf("%4d) %s\n", i+1, item.String())
  27. }
  28. str := util.Prompt(&util.PromptConfig{
  29. Prompt: "Enter number to select user: ",
  30. })
  31. i, err := strconv.Atoi(str)
  32. if err != nil {
  33. return err
  34. }
  35. if i < 1 || i > len(users) {
  36. return errors.New("Out of range")
  37. }
  38. u = users[i-1]
  39. }
  40. txt := util.Prompt(&util.PromptConfig{
  41. Prompt: fmt.Sprintf("Are you sure to delete '%s' [Y/n]? ", u.String()),
  42. })
  43. if txt != "y" && txt != "Y" {
  44. return nil
  45. }
  46. return s.Delete(u)
  47. }