newservice.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package new
  2. import (
  3. "os"
  4. "path/filepath"
  5. "text/template"
  6. "github.com/tal-tech/go-zero/tools/goctl/api/gogen"
  7. "github.com/urfave/cli"
  8. )
  9. const apiTemplate = `
  10. type Request struct {
  11. Name string ` + "`" + `path:"name,options=you|me"` + "`" + ` // 框架自动验证请求参数是否合法
  12. }
  13. type Response struct {
  14. Message string ` + "`" + `json:"message"` + "`" + `
  15. }
  16. service {{.name}}-api {
  17. @server(
  18. handler: GreetHandler
  19. )
  20. get /greet/from/:name(Request) returns (Response);
  21. }
  22. `
  23. func NewService(c *cli.Context) error {
  24. args := c.Args()
  25. name := "greet"
  26. if len(args) > 0 {
  27. name = args.First()
  28. }
  29. location := name
  30. err := os.MkdirAll(location, os.ModePerm)
  31. if err != nil {
  32. return err
  33. }
  34. filename := name + ".api"
  35. apiFilePath := filepath.Join(location, filename)
  36. fp, err := os.Create(apiFilePath)
  37. if err != nil {
  38. return err
  39. }
  40. defer fp.Close()
  41. t := template.Must(template.New("template").Parse(apiTemplate))
  42. if err := t.Execute(fp, map[string]string{
  43. "name": name,
  44. }); err != nil {
  45. return err
  46. }
  47. err = gogen.DoGenProject(apiFilePath, location)
  48. return err
  49. }