|
|
|
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
|
|
|
|
}
|
|
|
|
}
|