templates.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package tpl
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "github.com/logrusorgru/aurora"
  6. "github.com/spf13/cobra"
  7. "github.com/zeromicro/go-zero/core/errorx"
  8. "github.com/zeromicro/go-zero/tools/goctl/api/apigen"
  9. "github.com/zeromicro/go-zero/tools/goctl/api/gogen"
  10. apinew "github.com/zeromicro/go-zero/tools/goctl/api/new"
  11. "github.com/zeromicro/go-zero/tools/goctl/docker"
  12. "github.com/zeromicro/go-zero/tools/goctl/kube"
  13. mongogen "github.com/zeromicro/go-zero/tools/goctl/model/mongo/generate"
  14. modelgen "github.com/zeromicro/go-zero/tools/goctl/model/sql/gen"
  15. rpcgen "github.com/zeromicro/go-zero/tools/goctl/rpc/generator"
  16. "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
  17. )
  18. const templateParentPath = "/"
  19. // genTemplates writes the latest template text into file which is not exists
  20. func genTemplates(_ *cobra.Command, _ []string) error {
  21. path := varStringHome
  22. if len(path) != 0 {
  23. pathx.RegisterGoctlHome(path)
  24. }
  25. if err := errorx.Chain(
  26. func() error {
  27. return gogen.GenTemplates()
  28. },
  29. func() error {
  30. return modelgen.GenTemplates()
  31. },
  32. func() error {
  33. return rpcgen.GenTemplates()
  34. },
  35. func() error {
  36. return docker.GenTemplates()
  37. },
  38. func() error {
  39. return kube.GenTemplates()
  40. },
  41. func() error {
  42. return mongogen.Templates()
  43. },
  44. func() error {
  45. return apigen.GenTemplates()
  46. },
  47. func() error {
  48. return apinew.GenTemplates()
  49. },
  50. ); err != nil {
  51. return err
  52. }
  53. dir, err := pathx.GetTemplateDir(templateParentPath)
  54. if err != nil {
  55. return err
  56. }
  57. abs, err := filepath.Abs(dir)
  58. if err != nil {
  59. return err
  60. }
  61. fmt.Printf("Templates are generated in %s, %s\n", aurora.Green(abs),
  62. aurora.Red("edit on your risk!"))
  63. return nil
  64. }
  65. // cleanTemplates deletes all templates
  66. func cleanTemplates(_ *cobra.Command, _ []string) error {
  67. path := varStringHome
  68. if len(path) != 0 {
  69. pathx.RegisterGoctlHome(path)
  70. }
  71. err := errorx.Chain(
  72. func() error {
  73. return gogen.Clean()
  74. },
  75. func() error {
  76. return modelgen.Clean()
  77. },
  78. func() error {
  79. return rpcgen.Clean()
  80. },
  81. func() error {
  82. return docker.Clean()
  83. },
  84. func() error {
  85. return kube.Clean()
  86. },
  87. func() error {
  88. return mongogen.Clean()
  89. },
  90. func() error {
  91. return apigen.Clean()
  92. },
  93. func() error {
  94. return apinew.Clean()
  95. },
  96. )
  97. if err != nil {
  98. return err
  99. }
  100. fmt.Printf("%s\n", aurora.Green("templates are cleaned!"))
  101. return nil
  102. }
  103. // updateTemplates writes the latest template text into file,
  104. // it will delete the older templates if there are exists
  105. func updateTemplates(_ *cobra.Command, _ []string) (err error) {
  106. path := varStringHome
  107. category := varStringCategory
  108. if len(path) != 0 {
  109. pathx.RegisterGoctlHome(path)
  110. }
  111. defer func() {
  112. if err == nil {
  113. fmt.Println(aurora.Green(fmt.Sprintf("%s template are update!", category)).String())
  114. }
  115. }()
  116. switch category {
  117. case docker.Category():
  118. return docker.Update()
  119. case gogen.Category():
  120. return gogen.Update()
  121. case kube.Category():
  122. return kube.Update()
  123. case rpcgen.Category():
  124. return rpcgen.Update()
  125. case modelgen.Category():
  126. return modelgen.Update()
  127. case mongogen.Category():
  128. return mongogen.Update()
  129. case apigen.Category():
  130. return apigen.Update()
  131. case apinew.Category():
  132. return apinew.Update()
  133. default:
  134. err = fmt.Errorf("unexpected category: %s", category)
  135. return
  136. }
  137. }
  138. // revertTemplates will overwrite the old template content with the new template
  139. func revertTemplates(_ *cobra.Command, _ []string) (err error) {
  140. path := varStringHome
  141. category := varStringCategory
  142. filename := varStringName
  143. if len(path) != 0 {
  144. pathx.RegisterGoctlHome(path)
  145. }
  146. defer func() {
  147. if err == nil {
  148. fmt.Println(aurora.Green(fmt.Sprintf("%s template are reverted!", filename)).String())
  149. }
  150. }()
  151. switch category {
  152. case docker.Category():
  153. return docker.RevertTemplate(filename)
  154. case kube.Category():
  155. return kube.RevertTemplate(filename)
  156. case gogen.Category():
  157. return gogen.RevertTemplate(filename)
  158. case rpcgen.Category():
  159. return rpcgen.RevertTemplate(filename)
  160. case modelgen.Category():
  161. return modelgen.RevertTemplate(filename)
  162. case mongogen.Category():
  163. return mongogen.RevertTemplate(filename)
  164. case apigen.Category():
  165. return apigen.RevertTemplate(filename)
  166. case apinew.Category():
  167. return apinew.RevertTemplate(filename)
  168. default:
  169. err = fmt.Errorf("unexpected category: %s", category)
  170. return
  171. }
  172. }