mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-24 09:40:24 +08:00
05df86436f
* rebase upstream * rebase * trim no need line * trim no need line * trim no need line * update doc * remove update * optimized api new with absolute path like: goctl api new $PWD/xxxx * optimized api new with absolute path like: goctl api new $PWD/xxxx * optimized api new with absolute path like: goctl api new $PWD/xxxx * optimized api new with absolute path like: goctl api new $PWD/xxxx Co-authored-by: kingxt <dream4kingxt@163.com>
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
package new
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"text/template"
|
|
|
|
"github.com/tal-tech/go-zero/tools/goctl/api/gogen"
|
|
"github.com/tal-tech/go-zero/tools/goctl/util"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
const apiTemplate = `
|
|
type Request struct {
|
|
Name string ` + "`" + `path:"name,options=you|me"` + "`" + ` // 框架自动验证请求参数是否合法
|
|
}
|
|
|
|
type Response struct {
|
|
Message string ` + "`" + `json:"message"` + "`" + `
|
|
}
|
|
|
|
service {{.name}}-api {
|
|
@server(
|
|
handler: GreetHandler
|
|
)
|
|
get /greet/from/:name(Request) returns (Response);
|
|
}
|
|
`
|
|
|
|
func NewService(c *cli.Context) error {
|
|
args := c.Args()
|
|
dirName := "greet"
|
|
if len(args) > 0 {
|
|
dirName = args.First()
|
|
}
|
|
|
|
abs, err := filepath.Abs(dirName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = util.MkdirIfNotExist(abs)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
dirName = filepath.Base(filepath.Clean(abs))
|
|
filename := dirName + ".api"
|
|
apiFilePath := filepath.Join(abs, filename)
|
|
fp, err := os.Create(apiFilePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
defer fp.Close()
|
|
t := template.Must(template.New("template").Parse(apiTemplate))
|
|
if err := t.Execute(fp, map[string]string{
|
|
"name": dirName,
|
|
}); err != nil {
|
|
return err
|
|
}
|
|
|
|
err = gogen.DoGenProject(apiFilePath, abs)
|
|
return err
|
|
}
|