You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
package gen
|
|
|
|
|
|
|
|
import (
|
|
|
|
"path/filepath"
|
|
|
|
"runtime"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/tal-tech/go-zero/tools/goctl/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
// target
|
|
|
|
// ├── etc
|
|
|
|
// ├── internal
|
|
|
|
// │ ├── config
|
|
|
|
// │ ├── handler
|
|
|
|
// │ ├── logic
|
|
|
|
// │ ├── pb
|
|
|
|
// │ └── svc
|
|
|
|
func (g *defaultRpcGenerator) createDir() error {
|
|
|
|
ctx := g.Ctx
|
|
|
|
m := make(map[string]string)
|
|
|
|
m[dirTarget] = ctx.TargetDir
|
|
|
|
m[dirEtc] = filepath.Join(ctx.TargetDir, dirEtc)
|
|
|
|
m[dirInternal] = filepath.Join(ctx.TargetDir, dirInternal)
|
|
|
|
m[dirConfig] = filepath.Join(ctx.TargetDir, dirInternal, dirConfig)
|
|
|
|
m[dirHandler] = filepath.Join(ctx.TargetDir, dirInternal, dirHandler)
|
|
|
|
m[dirLogic] = filepath.Join(ctx.TargetDir, dirInternal, dirLogic)
|
|
|
|
m[dirPb] = filepath.Join(ctx.TargetDir, dirPb)
|
|
|
|
m[dirSvc] = filepath.Join(ctx.TargetDir, dirInternal, dirSvc)
|
|
|
|
m[dirShared] = g.Ctx.SharedDir
|
|
|
|
for _, d := range m {
|
|
|
|
err := util.MkdirIfNotExist(d)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
g.dirM = m
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (g *defaultRpcGenerator) mustGetPackage(dir string) string {
|
|
|
|
target := g.dirM[dir]
|
|
|
|
projectPath := g.Ctx.ProjectPath
|
|
|
|
relativePath := strings.TrimPrefix(target, projectPath)
|
|
|
|
os := runtime.GOOS
|
|
|
|
switch os {
|
|
|
|
case "windows":
|
|
|
|
relativePath = filepath.ToSlash(relativePath)
|
|
|
|
case "darwin":
|
|
|
|
default:
|
|
|
|
g.Ctx.Fatalln("unexpected os: %s", os)
|
|
|
|
}
|
|
|
|
return g.Ctx.Module + relativePath
|
|
|
|
}
|