123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package apigen
- import (
- _ "embed"
- "errors"
- "fmt"
- "html/template"
- "path/filepath"
- "strings"
- "github.com/gookit/color"
- "github.com/spf13/cobra"
- "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/util"
- "github.com/wuntsong-org/go-zero-plus/tools/goctlwt/util/pathx"
- )
- //go:embed api.tpl
- var apiTemplate string
- var (
- // VarStringOutput describes the output.
- VarStringOutput string
- // VarStringHome describes the goctl home.
- VarStringHome string
- // VarStringRemote describes the remote git repository.
- VarStringRemote string
- // VarStringBranch describes the git branch.
- VarStringBranch string
- )
- // CreateApiTemplate create api template file
- func CreateApiTemplate(_ *cobra.Command, _ []string) error {
- apiFile := VarStringOutput
- if len(apiFile) == 0 {
- return errors.New("missing -o")
- }
- fp, err := pathx.CreateIfNotExist(apiFile)
- if err != nil {
- return err
- }
- defer fp.Close()
- if len(VarStringRemote) > 0 {
- repo, _ := util.CloneIntoGitHome(VarStringRemote, VarStringBranch)
- if len(repo) > 0 {
- VarStringHome = repo
- }
- }
- if len(VarStringHome) > 0 {
- pathx.RegisterGoctlHome(VarStringHome)
- }
- text, err := pathx.LoadTemplate(category, apiTemplateFile, apiTemplate)
- if err != nil {
- return err
- }
- baseName := pathx.FileNameWithoutExt(filepath.Base(apiFile))
- if strings.HasSuffix(strings.ToLower(baseName), "-api") {
- baseName = baseName[:len(baseName)-4]
- } else if strings.HasSuffix(strings.ToLower(baseName), "api") {
- baseName = baseName[:len(baseName)-3]
- }
- t := template.Must(template.New("etcTemplate").Parse(text))
- if err := t.Execute(fp, map[string]string{
- "gitUser": getGitName(),
- "gitEmail": getGitEmail(),
- "serviceName": baseName + "-api",
- }); err != nil {
- return err
- }
- fmt.Println(color.Green.Render("Done."))
- return nil
- }
|