123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package apigen
- import (
- "errors"
- "fmt"
- "path/filepath"
- "strings"
- "text/template"
- "zero/tools/goctl/util"
- "github.com/logrusorgru/aurora"
- "github.com/urfave/cli"
- )
- const apiTemplate = `info(
- title: // TODO: add title
- desc: // TODO: add description
- author: {{.gitUser}}
- email: {{.gitEmail}}
- )
- type request struct{
- // TODO: add members here and delete this comment
- }
- type response struct{
- // TODO: add members here and delete this comment
- }
- @server(
- port: // TODO: add port here and delete this comment
- )
- service {{.serviceName}} {
- @server(
- handler: // TODO: set handler name and delete this comment
- )
- // TODO: edit the below line
- // get /users/id/:userId(request) returns(response)
- @server(
- handler: // TODO: set handler name and delete this comment
- )
- // TODO: edit the below line
- // post /users/create(request)
- }
- `
- func ApiCommand(c *cli.Context) error {
- apiFile := c.String("o")
- if len(apiFile) == 0 {
- return errors.New("missing -o")
- }
- fp, err := util.CreateIfNotExist(apiFile)
- if err != nil {
- return err
- }
- defer fp.Close()
- baseName := util.FileNameWithoutExt(filepath.Base(apiFile))
- if strings.HasSuffix(strings.ToLower(baseName), "-api") {
- baseName = baseName[:len(baseName)-4]
- } else if strings.HasSuffix(strings.ToLower(baseName), "api") {
- baseName = baseName[:len(baseName)-3]
- }
- t := template.Must(template.New("etcTemplate").Parse(apiTemplate))
- if err := t.Execute(fp, map[string]string{
- "gitUser": getGitName(),
- "gitEmail": getGitEmail(),
- "serviceName": baseName + "-api",
- }); err != nil {
- return err
- }
- fmt.Println(aurora.Green("Done."))
- return nil
- }
|