Skip to content

Commit f2c4df7

Browse files
committed
refactor: adjust output code dir
1 parent 7cb5b70 commit f2c4df7

File tree

3 files changed

+48
-36
lines changed

3 files changed

+48
-36
lines changed

README_zh-CN.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,12 +218,12 @@ $ grom api generate -n config.yaml
218218
然后你将会在前一步骤配置文件中配置的 `dir` 目录下得到生成的代码:
219219

220220
- `dir/model/*.go` 生成的数据库模型 go 文件
221-
- `dir/*.api` 生成的 go-zero api 文件
222-
- `dir/*.proto` 生成的 grpc proto 文件
223-
- `dir/convert-api.txt` api 层面的类型转换代码片段
224-
- `dir/convert-rpc.txt` rpc 层面的类型转换代码片段
225-
- `dir/filter.txt` 构建数据库模型查询条件的代码片段
226-
- `dir/update-map.txt` 构建数据库模型更新 map 的代码片段
221+
- `dir/api/*.api` 生成的 go-zero api 文件
222+
- `dir/pb/*.proto` 生成的 grpc proto 文件
223+
- `dir/gist/convert-api.txt` api 层面的类型转换代码片段
224+
- `dir/gist/convert-rpc.txt` rpc 层面的类型转换代码片段
225+
- `dir/gist/filter.txt` 构建数据库模型查询条件的代码片段
226+
- `dir/gist/update-map.txt` 构建数据库模型更新 map 的代码片段
227227

228228
3. 尽情享受吧。
229229

pkg/api/generate.go

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"fmt"
88
"go/format"
99
"log"
10-
"os"
1110
"path"
1211
"strings"
1312
"text/template"
@@ -36,7 +35,11 @@ const (
3635
updateMapOut = "update-map.txt"
3736
filterOut = "filter.txt"
3837
serverAPIOut = "server"
39-
modelDir = "model"
38+
39+
modelDir = "model"
40+
apiDir = "api"
41+
pbDir = "pb"
42+
gistDir = "gist"
4043

4144
writeFilePerm = 0o666
4245
unsignedPrefix = "u"
@@ -124,34 +127,28 @@ func GenerateProject(pc ProjectConfig) error {
124127
if err := pc.Check(); err != nil {
125128
return errors.WithMessage(err, "Check err")
126129
}
127-
128-
var cab, crb, umb, fb strings.Builder
129-
if err := mkdirIfNotExist(path.Join(pc.Dir, modelDir)); err != nil {
130-
return errors.WithMessage(err, "mkdirIfNotExist err")
131-
}
132130
defer util.CloseDB()
133131

132+
var cab, crb, umb, fb strings.Builder
134133
apiImports := make([]string, 0, len(pc.Tables))
135134
for _, table := range pc.Tables {
136135
if table == "" {
137136
continue
138137
}
139138

140-
var apiName, modelName string
139+
var baseName, apiName, modelName string
141140
c := pc.Config
142141
c.Table = table
143142
if pc.EnableTrimTablePrefix {
144143
c.StructName = strcase.ToCamel(strings.TrimPrefix(table, pc.TablePrefix))
145-
baseName := strings.ToLower(c.StructName)
146-
apiName = baseName + apiFileSuffix
147-
modelName = baseName + goFileSuffix
144+
baseName = strings.ToLower(c.StructName)
148145
} else {
149146
c.StructName = strcase.ToCamel(table)
150147
c.RouteName = strcase.ToDelimited(strings.TrimPrefix(table, pc.TablePrefix), c.GetDelimiter())
151-
baseName := strings.ToLower(strcase.ToCamel(c.RouteName))
152-
apiName = baseName + apiFileSuffix
153-
modelName = baseName + goFileSuffix
148+
baseName = strings.ToLower(strcase.ToCamel(c.RouteName))
154149
}
150+
apiName = baseName + apiFileSuffix
151+
modelName = baseName + goFileSuffix
155152

156153
cc := c.GetCmdConfig()
157154
fields, err := util.GetFields(cc)
@@ -169,8 +166,8 @@ func GenerateProject(pc ProjectConfig) error {
169166
if err != nil {
170167
return errors.WithMessage(err, "util.GenerateCode err")
171168
}
172-
if err := os.WriteFile(path.Join(pc.Dir, modelDir, modelName), []byte(model), writeFilePerm); err != nil {
173-
return errors.WithMessage(err, "os.WriteFile err")
169+
if err := writeFile(path.Join(pc.Dir, modelDir, modelName), model); err != nil {
170+
return errors.WithMessage(err, "writeFile err")
174171
}
175172
}
176173

@@ -179,8 +176,8 @@ func GenerateProject(pc ProjectConfig) error {
179176
if err != nil {
180177
return errors.WithMessage(err, "GenerateAPI err")
181178
}
182-
if err := os.WriteFile(path.Join(pc.Dir, apiName), []byte(api), writeFilePerm); err != nil {
183-
return errors.WithMessage(err, "os.WriteFile err")
179+
if err := writeFile(path.Join(pc.Dir, apiDir, apiName), api); err != nil {
180+
return errors.WithMessage(err, "writeFile err")
184181
}
185182
apiImports = append(apiImports, apiName)
186183

@@ -215,37 +212,38 @@ func GenerateProject(pc ProjectConfig) error {
215212
if fileName == "" {
216213
fileName = serverAPIOut
217214
}
218-
fileName = path.Join(pc.Dir, fileName+apiFileSuffix)
215+
dirName := path.Join(pc.Dir, pbDir)
216+
fileName = path.Join(pc.Dir, apiDir, fileName+apiFileSuffix)
219217

220218
out, err := GenerateServerAPI(c, apiImports, fileName)
221219
if err != nil {
222220
return errors.WithMessage(err, "GenerateServerAPI err")
223221
}
224-
if err := os.WriteFile(fileName, []byte(out), writeFilePerm); err != nil {
225-
return errors.WithMessage(err, "os.WriteFile err")
222+
if err := writeFile(fileName, out); err != nil {
223+
return errors.WithMessage(err, "writeFile err")
226224
}
227-
if err := protogen.DoGenProto(fileName, pc.Dir); err != nil {
225+
if err := protogen.DoGenProto(fileName, dirName); err != nil {
228226
return errors.WithMessage(err, "protogen.DoGenProto err")
229227
}
230228
}
231229
if ca := cab.String(); ca != "" {
232-
if err := os.WriteFile(path.Join(pc.Dir, convertAPIOut), []byte(ca[:len(ca)-1]), writeFilePerm); err != nil {
233-
return errors.WithMessage(err, "os.WriteFile err")
230+
if err := writeFile(path.Join(pc.Dir, gistDir, convertAPIOut), ca[:len(ca)-1]); err != nil {
231+
return errors.WithMessage(err, "writeFile err")
234232
}
235233
}
236234
if cr := crb.String(); cr != "" {
237-
if err := os.WriteFile(path.Join(pc.Dir, convertRPCOut), []byte(cr[:len(cr)-1]), writeFilePerm); err != nil {
238-
return errors.WithMessage(err, "os.WriteFile err")
235+
if err := writeFile(path.Join(pc.Dir, gistDir, convertRPCOut), cr[:len(cr)-1]); err != nil {
236+
return errors.WithMessage(err, "writeFile err")
239237
}
240238
}
241239
if um := umb.String(); um != "" {
242-
if err := os.WriteFile(path.Join(pc.Dir, updateMapOut), []byte(um[:len(um)-1]), writeFilePerm); err != nil {
243-
return errors.WithMessage(err, "os.WriteFile err")
240+
if err := writeFile(path.Join(pc.Dir, gistDir, updateMapOut), um[:len(um)-1]); err != nil {
241+
return errors.WithMessage(err, "writeFile err")
244242
}
245243
}
246244
if f := fb.String(); f != "" {
247-
if err := os.WriteFile(path.Join(pc.Dir, filterOut), []byte(f[:len(f)-1]), writeFilePerm); err != nil {
248-
return errors.WithMessage(err, "os.WriteFile err")
245+
if err := writeFile(path.Join(pc.Dir, gistDir, filterOut), f[:len(f)-1]); err != nil {
246+
return errors.WithMessage(err, "writeFile err")
249247
}
250248
}
251249

pkg/api/util.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package api
22

33
import (
44
"os"
5+
"path"
56
"regexp"
67
"strings"
78

@@ -77,6 +78,19 @@ func mkdirIfNotExist(dir string) error {
7778
return nil
7879
}
7980

81+
// writeFile writes the content to the named file.
82+
func writeFile(name, content string) error {
83+
if err := mkdirIfNotExist(path.Dir(name)); err != nil {
84+
return errors.WithMessage(err, "mkdirIfNotExist err")
85+
}
86+
87+
if err := os.WriteFile(name, []byte(content), writeFilePerm); err != nil {
88+
return errors.WithMessage(err, "os.WriteFile err")
89+
}
90+
91+
return nil
92+
}
93+
8094
// getTypeEmptyString gets the type empty value string.
8195
func getTypeEmptyString(t string) string {
8296
switch t {

0 commit comments

Comments
 (0)