genetc.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package gogen
  2. import (
  3. "bytes"
  4. "fmt"
  5. "strconv"
  6. "text/template"
  7. "zero/tools/goctl/api/spec"
  8. "zero/tools/goctl/api/util"
  9. )
  10. const (
  11. defaultPort = 8888
  12. etcDir = "etc"
  13. etcTemplate = `{
  14. "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.json", 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. t := template.Must(template.New("etcTemplate").Parse(etcTemplate))
  38. buffer := new(bytes.Buffer)
  39. err = t.Execute(buffer, map[string]string{
  40. "serviceName": service.Name,
  41. "host": host,
  42. "port": port,
  43. })
  44. if err != nil {
  45. return err
  46. }
  47. formatCode := formatCode(buffer.String())
  48. _, err = fp.WriteString(formatCode)
  49. return err
  50. }