123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package tpl
- import (
- "fmt"
- "path/filepath"
- "github.com/gookit/color"
- "github.com/spf13/cobra"
- "github.com/zeromicro/go-zero/core/errorx"
- "github.com/zeromicro/go-zero/tools/goctl/api/apigen"
- "github.com/zeromicro/go-zero/tools/goctl/api/gogen"
- apinew "github.com/zeromicro/go-zero/tools/goctl/api/new"
- "github.com/zeromicro/go-zero/tools/goctl/docker"
- "github.com/zeromicro/go-zero/tools/goctl/gateway"
- "github.com/zeromicro/go-zero/tools/goctl/kube"
- mongogen "github.com/zeromicro/go-zero/tools/goctl/model/mongo/generate"
- modelgen "github.com/zeromicro/go-zero/tools/goctl/model/sql/gen"
- rpcgen "github.com/zeromicro/go-zero/tools/goctl/rpc/generator"
- "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
- )
- const templateParentPath = "/"
- // genTemplates writes the latest template text into file which is not exists
- func genTemplates(_ *cobra.Command, _ []string) error {
- path := varStringHome
- if len(path) != 0 {
- pathx.RegisterGoctlHome(path)
- }
- if err := errorx.Chain(
- func() error {
- return gogen.GenTemplates()
- },
- func() error {
- return modelgen.GenTemplates()
- },
- func() error {
- return rpcgen.GenTemplates()
- },
- func() error {
- return docker.GenTemplates()
- },
- func() error {
- return kube.GenTemplates()
- },
- func() error {
- return mongogen.Templates()
- },
- func() error {
- return apigen.GenTemplates()
- },
- func() error {
- return apinew.GenTemplates()
- },
- func() error {
- return gateway.GenTemplates()
- },
- ); err != nil {
- return err
- }
- dir, err := pathx.GetTemplateDir(templateParentPath)
- if err != nil {
- return err
- }
- abs, err := filepath.Abs(dir)
- if err != nil {
- return err
- }
- fmt.Printf("Templates are generated in %s, %s\n", color.Green.Render(abs),
- color.Red.Render("edit on your risk!"))
- return nil
- }
- // cleanTemplates deletes all templates
- func cleanTemplates(_ *cobra.Command, _ []string) error {
- path := varStringHome
- if len(path) != 0 {
- pathx.RegisterGoctlHome(path)
- }
- err := errorx.Chain(
- func() error {
- return gogen.Clean()
- },
- func() error {
- return modelgen.Clean()
- },
- func() error {
- return rpcgen.Clean()
- },
- func() error {
- return docker.Clean()
- },
- func() error {
- return kube.Clean()
- },
- func() error {
- return mongogen.Clean()
- },
- func() error {
- return apigen.Clean()
- },
- func() error {
- return apinew.Clean()
- },
- func() error {
- return gateway.Clean()
- },
- )
- if err != nil {
- return err
- }
- fmt.Printf("%s\n", color.Green.Render("templates are cleaned!"))
- return nil
- }
- // updateTemplates writes the latest template text into file,
- // it will delete the older templates if there are exists
- func updateTemplates(_ *cobra.Command, _ []string) (err error) {
- path := varStringHome
- category := varStringCategory
- if len(path) != 0 {
- pathx.RegisterGoctlHome(path)
- }
- defer func() {
- if err == nil {
- fmt.Println(color.Green.Sprintf("%s template are update!", category))
- }
- }()
- switch category {
- case docker.Category():
- return docker.Update()
- case gogen.Category():
- return gogen.Update()
- case kube.Category():
- return kube.Update()
- case rpcgen.Category():
- return rpcgen.Update()
- case modelgen.Category():
- return modelgen.Update()
- case mongogen.Category():
- return mongogen.Update()
- case apigen.Category():
- return apigen.Update()
- case apinew.Category():
- return apinew.Update()
- case gateway.Category():
- return gateway.Update()
- default:
- err = fmt.Errorf("unexpected category: %s", category)
- return
- }
- }
- // revertTemplates will overwrite the old template content with the new template
- func revertTemplates(_ *cobra.Command, _ []string) (err error) {
- path := varStringHome
- category := varStringCategory
- filename := varStringName
- if len(path) != 0 {
- pathx.RegisterGoctlHome(path)
- }
- defer func() {
- if err == nil {
- fmt.Println(color.Green.Sprintf("%s template are reverted!", filename))
- }
- }()
- switch category {
- case docker.Category():
- return docker.RevertTemplate(filename)
- case kube.Category():
- return kube.RevertTemplate(filename)
- case gogen.Category():
- return gogen.RevertTemplate(filename)
- case rpcgen.Category():
- return rpcgen.RevertTemplate(filename)
- case modelgen.Category():
- return modelgen.RevertTemplate(filename)
- case mongogen.Category():
- return mongogen.RevertTemplate(filename)
- case apigen.Category():
- return apigen.RevertTemplate(filename)
- case apinew.Category():
- return apinew.RevertTemplate(filename)
- case gateway.Category():
- return gateway.RevertTemplate(filename)
- default:
- err = fmt.Errorf("unexpected category: %s", category)
- return
- }
- }
|