genetc.go 1.5 KB

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