newservice.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package new
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strings"
  6. "text/template"
  7. "github.com/tal-tech/go-zero/tools/goctl/api/gogen"
  8. "github.com/tal-tech/go-zero/tools/goctl/util"
  9. "github.com/urfave/cli"
  10. )
  11. const apiTemplate = `
  12. type Request {
  13. Name string ` + "`" + `path:"name,options=you|me"` + "`" + `
  14. }
  15. type Response {
  16. Message string ` + "`" + `json:"message"` + "`" + `
  17. }
  18. service {{.name}}-api {
  19. @handler {{.handler}}Handler
  20. get /from/:name(Request) returns (Response);
  21. }
  22. `
  23. func NewService(c *cli.Context) error {
  24. args := c.Args()
  25. dirName := args.First()
  26. if len(dirName) == 0 {
  27. dirName = "greet"
  28. }
  29. abs, err := filepath.Abs(dirName)
  30. if err != nil {
  31. return err
  32. }
  33. err = util.MkdirIfNotExist(abs)
  34. if err != nil {
  35. return err
  36. }
  37. dirName = filepath.Base(filepath.Clean(abs))
  38. filename := dirName + ".api"
  39. apiFilePath := filepath.Join(abs, filename)
  40. fp, err := os.Create(apiFilePath)
  41. if err != nil {
  42. return err
  43. }
  44. defer fp.Close()
  45. t := template.Must(template.New("template").Parse(apiTemplate))
  46. if err := t.Execute(fp, map[string]string{
  47. "name": dirName,
  48. "handler": strings.Title(dirName),
  49. }); err != nil {
  50. return err
  51. }
  52. err = gogen.DoGenProject(apiFilePath, abs)
  53. return err
  54. }