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. )
  8. // target
  9. // ├── etc
  10. // ├── internal
  11. // │   ├── config
  12. // │   ├── handler
  13. // │   ├── logic
  14. // │   ├── pb
  15. // │   └── svc
  16. func (g *defaultRpcGenerator) createDir() error {
  17. ctx := g.Ctx
  18. m := make(map[string]string)
  19. m[dirTarget] = ctx.TargetDir
  20. m[dirEtc] = filepath.Join(ctx.TargetDir, dirEtc)
  21. m[dirInternal] = filepath.Join(ctx.TargetDir, dirInternal)
  22. m[dirConfig] = filepath.Join(ctx.TargetDir, dirInternal, dirConfig)
  23. m[dirHandler] = filepath.Join(ctx.TargetDir, dirInternal, dirHandler)
  24. m[dirLogic] = filepath.Join(ctx.TargetDir, dirInternal, dirLogic)
  25. m[dirPb] = filepath.Join(ctx.TargetDir, dirPb)
  26. m[dirSvc] = filepath.Join(ctx.TargetDir, dirInternal, dirSvc)
  27. m[dirShared] = g.Ctx.SharedDir
  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 "windows":
  44. relativePath = filepath.ToSlash(relativePath)
  45. case "darwin":
  46. default:
  47. g.Ctx.Fatalln("unexpected os: %s", os)
  48. }
  49. return g.Ctx.Module + relativePath
  50. }