gen.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package gen
  2. import (
  3. "github.com/logrusorgru/aurora"
  4. "github.com/tal-tech/go-zero/tools/goctl/rpc/ctx"
  5. "github.com/tal-tech/go-zero/tools/goctl/rpc/parser"
  6. )
  7. const (
  8. dirTarget = "dirTarget"
  9. dirConfig = "config"
  10. dirEtc = "etc"
  11. dirSvc = "svc"
  12. dirServer = "server"
  13. dirLogic = "logic"
  14. dirPb = "pb"
  15. dirInternal = "internal"
  16. fileConfig = "config.go"
  17. fileServiceContext = "servicecontext.go"
  18. )
  19. type defaultRpcGenerator struct {
  20. dirM map[string]string
  21. Ctx *ctx.RpcContext
  22. ast *parser.PbAst
  23. }
  24. func NewDefaultRpcGenerator(ctx *ctx.RpcContext) *defaultRpcGenerator {
  25. return &defaultRpcGenerator{
  26. Ctx: ctx,
  27. }
  28. }
  29. func (g *defaultRpcGenerator) Generate() (err error) {
  30. g.Ctx.Info(aurora.Blue("-> goctl rpc reference documents: ").String() + "「https://github.com/tal-tech/zero-doc/blob/main/doc/goctl-rpc.md」")
  31. g.Ctx.Warning("-> generating rpc code ...")
  32. defer func() {
  33. if err == nil {
  34. g.Ctx.MarkDone()
  35. }
  36. }()
  37. err = g.createDir()
  38. if err != nil {
  39. return
  40. }
  41. err = g.initGoMod()
  42. if err != nil {
  43. return
  44. }
  45. err = g.genEtc()
  46. if err != nil {
  47. return
  48. }
  49. err = g.genPb()
  50. if err != nil {
  51. return
  52. }
  53. err = g.genConfig()
  54. if err != nil {
  55. return
  56. }
  57. err = g.genSvc()
  58. if err != nil {
  59. return
  60. }
  61. err = g.genLogic()
  62. if err != nil {
  63. return
  64. }
  65. err = g.genHandler()
  66. if err != nil {
  67. return
  68. }
  69. err = g.genMain()
  70. if err != nil {
  71. return
  72. }
  73. err = g.genCall()
  74. if err != nil {
  75. return
  76. }
  77. return
  78. }