show.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package cmd
  2. import (
  3. "errors"
  4. "fmt"
  5. "strconv"
  6. "github.com/jsmartx/giter/git"
  7. "github.com/jsmartx/giter/store"
  8. "github.com/jsmartx/giter/util"
  9. "github.com/urfave/cli"
  10. )
  11. func Show(c *cli.Context) error {
  12. g, err := git.New(".")
  13. if err != nil {
  14. return err
  15. }
  16. name := c.Args().First()
  17. if name == "" {
  18. defaultName := ""
  19. if u := g.GetUser(); u != nil {
  20. defaultName = u.Name
  21. }
  22. name = util.Prompt(&util.PromptConfig{
  23. Prompt: "user name: ",
  24. Default: defaultName,
  25. })
  26. }
  27. s := store.New()
  28. users := s.List(name, true)
  29. if len(users) == 0 {
  30. return errors.New("user not found")
  31. }
  32. u := users[0]
  33. if len(users) > 1 {
  34. fmt.Printf("There are %d users:\n", len(users))
  35. for i, item := range users {
  36. fmt.Printf("%4d) %s\n", i+1, item.String())
  37. }
  38. str := util.Prompt(&util.PromptConfig{
  39. Prompt: "Enter number to select user: ",
  40. })
  41. i, err := strconv.Atoi(str)
  42. if err != nil {
  43. return err
  44. }
  45. if i < 1 || i > len(users) {
  46. return errors.New("Out of range")
  47. }
  48. u = users[i-1]
  49. }
  50. keyPath, err := u.KeyPath()
  51. if err != nil {
  52. return err
  53. }
  54. if u.IsSSH() {
  55. fmt.Printf(" User: %s\n", u.String())
  56. fmt.Printf(" Email: %s\n", u.Email)
  57. fmt.Printf("Private Key: %s\n", keyPath)
  58. fmt.Printf(" Public Key: %s.pub\n", keyPath)
  59. } else {
  60. fmt.Printf(" User: %s\n", u.String())
  61. fmt.Printf(" Email: %s\n", u.Email)
  62. fmt.Printf("Credential: %s.credential\n", keyPath)
  63. }
  64. return nil
  65. }