product.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package main
  2. import (
  3. "bufio"
  4. "errors"
  5. "fmt"
  6. "io/ioutil"
  7. "os"
  8. "sparrow/pkg/models"
  9. "sparrow/pkg/productconfig"
  10. "sparrow/pkg/rpcs"
  11. "strings"
  12. "sparrow/pkg/server"
  13. )
  14. func addProduct() error {
  15. args := models.Product{}
  16. reader := bufio.NewReader(os.Stdin)
  17. fmt.Printf("vendor ID: ")
  18. id, err := reader.ReadString('\n')
  19. if err != nil {
  20. return err
  21. }
  22. vendor := strings.TrimSpace(id)
  23. if err != nil {
  24. return err
  25. }
  26. args.VendorID = vendor
  27. fmt.Printf("product name: ")
  28. name, err := reader.ReadString('\n')
  29. if err != nil {
  30. return err
  31. }
  32. args.ProductName = strings.TrimSpace(name)
  33. fmt.Printf("product description: ")
  34. desc, err := reader.ReadString('\n')
  35. if err != nil {
  36. return err
  37. }
  38. args.ProductDescription = strings.TrimSpace(desc)
  39. fmt.Printf("product config json file: ")
  40. file, err := reader.ReadString('\n')
  41. if err != nil {
  42. return err
  43. }
  44. jsonfile := strings.TrimSpace(file)
  45. fi, err := os.Open(jsonfile)
  46. if err != nil {
  47. return err
  48. }
  49. content, err := ioutil.ReadAll(fi)
  50. config := string(content)
  51. fi.Close()
  52. _, err = productconfig.New(config)
  53. if err != nil {
  54. return err
  55. }
  56. args.ProductConfig = config
  57. reply := &models.Product{}
  58. err = server.RPCCallByName(nil, rpcs.RegistryServerName, "Registry.SaveProduct", &args, reply)
  59. if err != nil {
  60. return err
  61. }
  62. fmt.Println("=======> product created successfully:")
  63. printStruct(reply)
  64. fmt.Println("=======")
  65. return nil
  66. }
  67. func DoProductCommand(args []string) error {
  68. if len(args) < 1 {
  69. return errors.New("command arguments not enough!")
  70. }
  71. op := strings.TrimSpace(args[0])
  72. switch op {
  73. case "add":
  74. if len(args) > 1 {
  75. return errors.New("unnecessary command arguments. just type 'product add'")
  76. }
  77. err := addProduct()
  78. if err != nil {
  79. return err
  80. }
  81. default:
  82. return errors.New("operation not suported:" + op)
  83. }
  84. return nil
  85. }