deving
This commit is contained in:
79
main.go
Normal file
79
main.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/utils"
|
||||
"google.golang.org/protobuf/compiler/protogen"
|
||||
)
|
||||
|
||||
var (
|
||||
flags flag.FlagSet
|
||||
path = flags.String("path", "", "输出目录,默认为当前目录")
|
||||
)
|
||||
|
||||
func main() {
|
||||
opts := protogen.Options{
|
||||
ParamFunc: func(name, value string) error {
|
||||
//fmt.Println(name, value)
|
||||
flags.Set(name, value)
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
opts.Run(func(gen *protogen.Plugin) error {
|
||||
// set output directory
|
||||
if *path == "" {
|
||||
*path, _ = os.Getwd()
|
||||
*path = filepath.Join(*path, "test/http")
|
||||
}
|
||||
|
||||
if !utils.PathExists(*path) {
|
||||
os.MkdirAll(*path, 0755)
|
||||
}
|
||||
|
||||
for _, file := range gen.Files {
|
||||
if len(file.Services) == 0 {
|
||||
continue
|
||||
}
|
||||
if err := generateFiles(gen, file); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func generateFiles(gen *protogen.Plugin, file *protogen.File) error {
|
||||
for _, service := range file.Services {
|
||||
for _, method := range service.Methods {
|
||||
sm := fmt.Sprintf("==> %s.%s", service.GoName, method.GoName)
|
||||
// 生成测试文件
|
||||
if err := generateHttpTestFile(gen, file, service, method); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(sm) // 打印服务和方法名
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateHttpTestFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service, method *protogen.Method) error {
|
||||
filename := fmt.Sprintf("%s_%s_test.json", service.GoName, method.GoName)
|
||||
g := gen.NewGeneratedFile(filepath.Join(*path, filename), "")
|
||||
g.P("{")
|
||||
g.P(` "name": "` + method.GoName + `",`)
|
||||
g.P(` "url": "http://localhost:8080/` + service.GoName + `/` + method.GoName + `",`)
|
||||
g.P(` "method": "POST",`)
|
||||
g.P(` "headers": {`)
|
||||
g.P(` "Content-Type": "application/json"`)
|
||||
g.P(` },`)
|
||||
g.P(` "body": {`)
|
||||
g.P(` }`)
|
||||
g.P("}")
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user