genetc.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package gogen
  2. import (
  3. "bytes"
  4. "fmt"
  5. "strconv"
  6. "text/template"
  7. "github.com/tal-tech/go-zero/tools/goctl/api/spec"
  8. "github.com/tal-tech/go-zero/tools/goctl/api/util"
  9. )
  10. const (
  11. defaultPort = 8888
  12. etcDir = "etc"
  13. etcTemplate = `Name: {{.serviceName}}
  14. Host: {{.host}}
  15. Port: {{.port}}
  16. `
  17. )
  18. func genEtc(dir string, api *spec.ApiSpec) error {
  19. fp, created, err := util.MaybeCreateFile(dir, etcDir, fmt.Sprintf("%s.yaml", api.Service.Name))
  20. if err != nil {
  21. return err
  22. }
  23. if !created {
  24. return nil
  25. }
  26. defer fp.Close()
  27. service := api.Service
  28. host, ok := util.GetAnnotationValue(service.Annotations, "server", "host")
  29. if !ok {
  30. host = "0.0.0.0"
  31. }
  32. port, ok := util.GetAnnotationValue(service.Annotations, "server", "port")
  33. if !ok {
  34. port = strconv.Itoa(defaultPort)
  35. }
  36. t := template.Must(template.New("etcTemplate").Parse(etcTemplate))
  37. buffer := new(bytes.Buffer)
  38. err = t.Execute(buffer, map[string]string{
  39. "serviceName": service.Name,
  40. "host": host,
  41. "port": port,
  42. })
  43. if err != nil {
  44. return err
  45. }
  46. formatCode := formatCode(buffer.String())
  47. _, err = fp.WriteString(formatCode)
  48. return err
  49. }