genetc.go 1.3 KB

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