gendir.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package gen
  2. import (
  3. "path/filepath"
  4. "runtime"
  5. "strings"
  6. "github.com/tal-tech/go-zero/tools/goctl/util"
  7. "github.com/tal-tech/go-zero/tools/goctl/vars"
  8. )
  9. // target
  10. // ├── etc
  11. // ├── internal
  12. // │   ├── config
  13. // │   ├── handler
  14. // │   ├── logic
  15. // │   ├── pb
  16. // │   └── svc
  17. func (g *defaultRpcGenerator) createDir() error {
  18. ctx := g.Ctx
  19. m := make(map[string]string)
  20. m[dirTarget] = ctx.TargetDir
  21. m[dirEtc] = filepath.Join(ctx.TargetDir, dirEtc)
  22. m[dirInternal] = filepath.Join(ctx.TargetDir, dirInternal)
  23. m[dirConfig] = filepath.Join(ctx.TargetDir, dirInternal, dirConfig)
  24. m[dirServer] = filepath.Join(ctx.TargetDir, dirInternal, dirServer)
  25. m[dirLogic] = filepath.Join(ctx.TargetDir, dirInternal, dirLogic)
  26. m[dirPb] = filepath.Join(ctx.TargetDir, dirPb)
  27. m[dirSvc] = filepath.Join(ctx.TargetDir, dirInternal, dirSvc)
  28. for _, d := range m {
  29. err := util.MkdirIfNotExist(d)
  30. if err != nil {
  31. return err
  32. }
  33. }
  34. g.dirM = m
  35. return nil
  36. }
  37. func (g *defaultRpcGenerator) mustGetPackage(dir string) string {
  38. target := g.dirM[dir]
  39. projectPath := g.Ctx.ProjectPath
  40. relativePath := strings.TrimPrefix(target, projectPath)
  41. os := runtime.GOOS
  42. switch os {
  43. case vars.OsWindows:
  44. relativePath = filepath.ToSlash(relativePath)
  45. case vars.OsMac, vars.OsLinux:
  46. default:
  47. g.Ctx.Fatalln("unexpected os: %s", os)
  48. }
  49. return g.Ctx.Module + relativePath
  50. }