Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove duplicated code in goctl #369

Merged
merged 1 commit into from
Jan 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,11 @@ GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/tal-tech/

## 7. 文档

* API 文档 (逐步完善中)
* API 文档

[https://www.yuque.com/tal-tech/go-zero](https://www.yuque.com/tal-tech/go-zero)

* awesome 系列
* awesome 系列(全部收录于『微服务实践』公众号)
* [快速构建高并发微服务](https://github.com/tal-tech/zero-doc/blob/main/doc/shorturl.md)
* [快速构建高并发微服务 - 多 RPC 版](https://github.com/tal-tech/zero-doc/blob/main/docs/zero/bookstore.md)
* [goctl 使用帮助](https://github.com/tal-tech/zero-doc/blob/main/doc/goctl.md)
Expand All @@ -172,6 +172,12 @@ GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/tal-tech/
* [基于 prometheus 的微服务指标监控](https://github.com/tal-tech/zero-doc/blob/main/doc/metric.md)
* [文本序列化和反序列化](https://github.com/tal-tech/zero-doc/blob/main/doc/mapping.md)
* [快速构建 jwt 鉴权认证](https://github.com/tal-tech/zero-doc/blob/main/doc/jwt.md)

* 精选 `goctl` 插件

* [goctl-swagger](https://github.com/zeromicro/goctl-swagger) 一键生成 `api` 的 `swagger` 文档
* [goctl-android](https://github.com/zeromicro/goctl-android) 生成 `java (android)` 端 `http client` 请求代码
* [goctl-go-compact](https://github.com/zeromicro/goctl-go-compact) 合并 `api` 里同一个 `group` 里的 `handler` 到一个 `go` 文件

## 8. 微信公众号

Expand Down
42 changes: 12 additions & 30 deletions tools/goctl/api/gogen/genconfig.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package gogen

import (
"bytes"
"fmt"
"strings"
"text/template"

"github.com/tal-tech/go-zero/tools/goctl/api/spec"
"github.com/tal-tech/go-zero/tools/goctl/api/util"
"github.com/tal-tech/go-zero/tools/goctl/config"
ctlutil "github.com/tal-tech/go-zero/tools/goctl/util"
"github.com/tal-tech/go-zero/tools/goctl/util/format"
"github.com/tal-tech/go-zero/tools/goctl/vars"
)
Expand Down Expand Up @@ -39,38 +35,24 @@ func genConfig(dir string, cfg *config.Config, api *spec.ApiSpec) error {
return err
}

fp, created, err := util.MaybeCreateFile(dir, configDir, filename+".go")
if err != nil {
return err
}
if !created {
return nil
}
defer fp.Close()

var authNames = getAuths(api)
var auths []string
for _, item := range authNames {
auths = append(auths, fmt.Sprintf("%s %s", item, jwtTemplate))
}

var authImportStr = fmt.Sprintf("\"%s/rest\"", vars.ProjectOpenSourceUrl)
text, err := ctlutil.LoadTemplate(category, configTemplateFile, configTemplate)
if err != nil {
return err
}

t := template.Must(template.New("configTemplate").Parse(text))
buffer := new(bytes.Buffer)
err = t.Execute(buffer, map[string]string{
"authImport": authImportStr,
"auth": strings.Join(auths, "\n"),
return genFile(fileGenConfig{
dir: dir,
subdir: configDir,
filename: filename + ".go",
templateName: "configTemplate",
category: category,
templateFile: configTemplateFile,
builtinTemplate: configTemplate,
data: map[string]string{
"authImport": authImportStr,
"auth": strings.Join(auths, "\n"),
},
})
if err != nil {
return err
}

formatCode := formatCode(buffer.String())
_, err = fp.WriteString(formatCode)
return err
}
43 changes: 13 additions & 30 deletions tools/goctl/api/gogen/genetc.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package gogen

import (
"bytes"
"fmt"
"strconv"
"text/template"

"github.com/tal-tech/go-zero/tools/goctl/api/spec"
"github.com/tal-tech/go-zero/tools/goctl/api/util"
"github.com/tal-tech/go-zero/tools/goctl/config"
ctlutil "github.com/tal-tech/go-zero/tools/goctl/util"
"github.com/tal-tech/go-zero/tools/goctl/util/format"
)

Expand All @@ -28,15 +25,6 @@ func genEtc(dir string, cfg *config.Config, api *spec.ApiSpec) error {
return err
}

fp, created, err := util.MaybeCreateFile(dir, etcDir, fmt.Sprintf("%s.yaml", filename))
if err != nil {
return err
}
if !created {
return nil
}
defer fp.Close()

service := api.Service
host, ok := util.GetAnnotationValue(service.Groups[0].Annotations, "server", "host")
if !ok {
Expand All @@ -47,23 +35,18 @@ func genEtc(dir string, cfg *config.Config, api *spec.ApiSpec) error {
port = strconv.Itoa(defaultPort)
}

text, err := ctlutil.LoadTemplate(category, etcTemplateFile, etcTemplate)
if err != nil {
return err
}

t := template.Must(template.New("etcTemplate").Parse(text))
buffer := new(bytes.Buffer)
err = t.Execute(buffer, map[string]string{
"serviceName": service.Name,
"host": host,
"port": port,
return genFile(fileGenConfig{
dir: dir,
subdir: etcDir,
filename: fmt.Sprintf("%s.yaml", filename),
templateName: "etcTemplate",
category: category,
templateFile: etcTemplateFile,
builtinTemplate: etcTemplate,
data: map[string]string{
"serviceName": service.Name,
"host": host,
"port": port,
},
})
if err != nil {
return err
}

formatCode := formatCode(buffer.String())
_, err = fp.WriteString(formatCode)
return err
}
36 changes: 10 additions & 26 deletions tools/goctl/api/gogen/genhandlers.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package gogen

import (
"bytes"
"errors"
"fmt"
"path"
"strings"
"text/template"
"unicode"

"github.com/tal-tech/go-zero/tools/goctl/api/spec"
Expand Down Expand Up @@ -82,30 +80,16 @@ func doGenToFile(dir, handler string, cfg *config.Config, group spec.Group,
return err
}

filename = filename + ".go"
fp, created, err := apiutil.MaybeCreateFile(dir, getHandlerFolderPath(group, route), filename)
if err != nil {
return err
}
if !created {
return nil
}
defer fp.Close()

text, err := util.LoadTemplate(category, handlerTemplateFile, handlerTemplate)
if err != nil {
return err
}

buffer := new(bytes.Buffer)
err = template.Must(template.New("handlerTemplate").Parse(text)).Execute(buffer, handleObj)
if err != nil {
return err
}

formatCode := formatCode(buffer.String())
_, err = fp.WriteString(formatCode)
return err
return genFile(fileGenConfig{
dir: dir,
subdir: getHandlerFolderPath(group, route),
filename: filename + ".go",
templateName: "handlerTemplate",
category: category,
templateFile: handlerTemplateFile,
builtinTemplate: handlerTemplate,
data: handleObj,
})
}

func genHandlers(dir string, cfg *config.Config, api *spec.ApiSpec) error {
Expand Down
50 changes: 16 additions & 34 deletions tools/goctl/api/gogen/genlogic.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package gogen

import (
"bytes"
"fmt"
"path"
"strings"
"text/template"

"github.com/tal-tech/go-zero/tools/goctl/api/spec"
"github.com/tal-tech/go-zero/tools/goctl/api/util"
Expand Down Expand Up @@ -61,17 +59,6 @@ func genLogicByRoute(dir string, cfg *config.Config, group spec.Group, route spe
return err
}

goFile = goFile + ".go"
fp, created, err := util.MaybeCreateFile(dir, getLogicFolderPath(group, route), goFile)
if err != nil {
return err
}

if !created {
return nil
}
defer fp.Close()

parentPkg, err := getParentPackage(dir)
if err != nil {
return err
Expand All @@ -93,28 +80,23 @@ func genLogicByRoute(dir string, cfg *config.Config, group spec.Group, route spe
requestString = "req " + "types." + strings.Title(route.RequestType.Name)
}

text, err := ctlutil.LoadTemplate(category, logicTemplateFile, logicTemplate)
if err != nil {
return err
}

t := template.Must(template.New("logicTemplate").Parse(text))
buffer := new(bytes.Buffer)
err = t.Execute(fp, map[string]string{
"imports": imports,
"logic": strings.Title(logic),
"function": strings.Title(strings.TrimSuffix(logic, "Logic")),
"responseType": responseString,
"returnString": returnString,
"request": requestString,
return genFile(fileGenConfig{
dir: dir,
subdir: getLogicFolderPath(group, route),
filename: goFile + ".go",
templateName: "logicTemplate",
category: category,
templateFile: logicTemplateFile,
builtinTemplate: logicTemplate,
data: map[string]string{
"imports": imports,
"logic": strings.Title(logic),
"function": strings.Title(strings.TrimSuffix(logic, "Logic")),
"responseType": responseString,
"returnString": returnString,
"request": requestString,
},
})
if err != nil {
return err
}

formatCode := formatCode(buffer.String())
_, err = fp.WriteString(formatCode)
return err
}

func getLogicFolderPath(group spec.Group, route spec.Route) string {
Expand Down
42 changes: 12 additions & 30 deletions tools/goctl/api/gogen/genmain.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package gogen

import (
"bytes"
"fmt"
"strings"
"text/template"

"github.com/tal-tech/go-zero/tools/goctl/api/spec"
"github.com/tal-tech/go-zero/tools/goctl/api/util"
"github.com/tal-tech/go-zero/tools/goctl/config"
ctlutil "github.com/tal-tech/go-zero/tools/goctl/util"
"github.com/tal-tech/go-zero/tools/goctl/util/format"
Expand Down Expand Up @@ -52,39 +49,24 @@ func genMain(dir string, cfg *config.Config, api *spec.ApiSpec) error {
return err
}

goFile := filename + ".go"
fp, created, err := util.MaybeCreateFile(dir, "", goFile)
if err != nil {
return err
}
if !created {
return nil
}
defer fp.Close()

parentPkg, err := getParentPackage(dir)
if err != nil {
return err
}

text, err := ctlutil.LoadTemplate(category, mainTemplateFile, mainTemplate)
if err != nil {
return err
}

t := template.Must(template.New("mainTemplate").Parse(text))
buffer := new(bytes.Buffer)
err = t.Execute(buffer, map[string]string{
"importPackages": genMainImports(parentPkg),
"serviceName": api.Service.Name,
return genFile(fileGenConfig{
dir: dir,
subdir: "",
filename: filename + ".go",
templateName: "mainTemplate",
category: category,
templateFile: mainTemplateFile,
builtinTemplate: mainTemplate,
data: map[string]string{
"importPackages": genMainImports(parentPkg),
"serviceName": api.Service.Name,
},
})
if err != nil {
return err
}

formatCode := formatCode(buffer.String())
_, err = fp.WriteString(formatCode)
return err
}

func genMainImports(parentPkg string) string {
Expand Down
Loading