gensvc.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package gogen
  2. import (
  3. _ "embed"
  4. "fmt"
  5. "strings"
  6. "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/api/spec"
  7. "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/config"
  8. "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/util/format"
  9. "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/util/pathx"
  10. "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/vars"
  11. )
  12. const contextFilename = "service_context"
  13. //go:embed svc.tpl
  14. var contextTemplate string
  15. func genServiceContext(dir, rootPkg string, cfg *config.Config, api *spec.ApiSpec) error {
  16. filename, err := format.FileNamingFormat(cfg.NamingFormat, contextFilename)
  17. if err != nil {
  18. return err
  19. }
  20. var middlewareStr string
  21. var middlewareAssignment string
  22. middlewares := getMiddleware(api)
  23. for _, item := range middlewares {
  24. middlewareStr += fmt.Sprintf("%s rest.Middleware\n", item)
  25. name := strings.TrimSuffix(item, "Middleware") + "Middleware"
  26. middlewareAssignment += fmt.Sprintf("%s: %s,\n", item,
  27. fmt.Sprintf("middleware.New%s().%s", strings.Title(name), "Handle"))
  28. }
  29. configImport := "\"" + pathx.JoinPackages(rootPkg, configDir) + "\""
  30. if len(middlewareStr) > 0 {
  31. configImport += "\n\t\"" + pathx.JoinPackages(rootPkg, middlewareDir) + "\""
  32. configImport += fmt.Sprintf("\n\t\"%s/rest\"", vars.ProjectOpenSourceURL)
  33. }
  34. return genFile(fileGenConfig{
  35. dir: dir,
  36. subdir: contextDir,
  37. filename: filename + ".go",
  38. templateName: "contextTemplate",
  39. category: category,
  40. templateFile: contextTemplateFile,
  41. builtinTemplate: contextTemplate,
  42. data: map[string]string{
  43. "configImport": configImport,
  44. "config": "config.Config",
  45. "middleware": middlewareStr,
  46. "middlewareAssignment": middlewareAssignment,
  47. },
  48. })
  49. }