optimize: api generating for idea plugin (#68)
* add flag: force to generate api * add flag: force to generate api * format api template * Revert "format api template"
This commit is contained in:
@@ -14,12 +14,13 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/logrusorgru/aurora"
|
"github.com/logrusorgru/aurora"
|
||||||
|
"github.com/urfave/cli"
|
||||||
|
|
||||||
"github.com/tal-tech/go-zero/core/logx"
|
"github.com/tal-tech/go-zero/core/logx"
|
||||||
apiformat "github.com/tal-tech/go-zero/tools/goctl/api/format"
|
apiformat "github.com/tal-tech/go-zero/tools/goctl/api/format"
|
||||||
"github.com/tal-tech/go-zero/tools/goctl/api/parser"
|
"github.com/tal-tech/go-zero/tools/goctl/api/parser"
|
||||||
apiutil "github.com/tal-tech/go-zero/tools/goctl/api/util"
|
apiutil "github.com/tal-tech/go-zero/tools/goctl/api/util"
|
||||||
"github.com/tal-tech/go-zero/tools/goctl/util"
|
"github.com/tal-tech/go-zero/tools/goctl/util"
|
||||||
"github.com/urfave/cli"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const tmpFile = "%s-%d"
|
const tmpFile = "%s-%d"
|
||||||
@@ -29,6 +30,7 @@ var tmpDir = path.Join(os.TempDir(), "goctl")
|
|||||||
func GoCommand(c *cli.Context) error {
|
func GoCommand(c *cli.Context) error {
|
||||||
apiFile := c.String("api")
|
apiFile := c.String("api")
|
||||||
dir := c.String("dir")
|
dir := c.String("dir")
|
||||||
|
force := c.Bool("force")
|
||||||
if len(apiFile) == 0 {
|
if len(apiFile) == 0 {
|
||||||
return errors.New("missing -api")
|
return errors.New("missing -api")
|
||||||
}
|
}
|
||||||
@@ -36,10 +38,10 @@ func GoCommand(c *cli.Context) error {
|
|||||||
return errors.New("missing -dir")
|
return errors.New("missing -dir")
|
||||||
}
|
}
|
||||||
|
|
||||||
return DoGenProject(apiFile, dir)
|
return DoGenProject(apiFile, dir, force)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoGenProject(apiFile, dir string) error {
|
func DoGenProject(apiFile, dir string, force bool) error {
|
||||||
p, err := parser.NewParser(apiFile)
|
p, err := parser.NewParser(apiFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -54,9 +56,9 @@ func DoGenProject(apiFile, dir string) error {
|
|||||||
logx.Must(genConfig(dir))
|
logx.Must(genConfig(dir))
|
||||||
logx.Must(genMain(dir, api))
|
logx.Must(genMain(dir, api))
|
||||||
logx.Must(genServiceContext(dir, api))
|
logx.Must(genServiceContext(dir, api))
|
||||||
logx.Must(genTypes(dir, api))
|
logx.Must(genTypes(dir, api, force))
|
||||||
logx.Must(genHandlers(dir, api))
|
logx.Must(genHandlers(dir, api))
|
||||||
logx.Must(genRoutes(dir, api))
|
logx.Must(genRoutes(dir, api, force))
|
||||||
logx.Must(genLogic(dir, api))
|
logx.Must(genLogic(dir, api))
|
||||||
// it does not work
|
// it does not work
|
||||||
format(dir)
|
format(dir)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ type (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func genRoutes(dir string, api *spec.ApiSpec) error {
|
func genRoutes(dir string, api *spec.ApiSpec, force bool) error {
|
||||||
var builder strings.Builder
|
var builder strings.Builder
|
||||||
groups, err := getRoutes(api)
|
groups, err := getRoutes(api)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -102,8 +102,10 @@ func genRoutes(dir string, api *spec.ApiSpec) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
filename := path.Join(dir, handlerDir, routesFilename)
|
filename := path.Join(dir, handlerDir, routesFilename)
|
||||||
if err := util.RemoveOrQuit(filename); err != nil {
|
if !force {
|
||||||
return err
|
if err := util.RemoveOrQuit(filename); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fp, created, err := apiutil.MaybeCreateFile(dir, handlerDir, routesFilename)
|
fp, created, err := apiutil.MaybeCreateFile(dir, handlerDir, routesFilename)
|
||||||
|
|||||||
@@ -42,15 +42,17 @@ func BuildTypes(types []spec.Type) (string, error) {
|
|||||||
return builder.String(), nil
|
return builder.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func genTypes(dir string, api *spec.ApiSpec) error {
|
func genTypes(dir string, api *spec.ApiSpec, force bool) error {
|
||||||
val, err := BuildTypes(api.Types)
|
val, err := BuildTypes(api.Types)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
filename := path.Join(dir, typesDir, typesFile)
|
filename := path.Join(dir, typesDir, typesFile)
|
||||||
if err := util.RemoveOrQuit(filename); err != nil {
|
if !force {
|
||||||
return err
|
if err := util.RemoveOrQuit(filename); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fp, created, err := apiutil.MaybeCreateFile(dir, typesDir, typesFile)
|
fp, created, err := apiutil.MaybeCreateFile(dir, typesDir, typesFile)
|
||||||
|
|||||||
@@ -60,6 +60,6 @@ func NewService(c *cli.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = gogen.DoGenProject(apiFilePath, abs)
|
err = gogen.DoGenProject(apiFilePath, abs, true)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,10 @@ var (
|
|||||||
Name: "api",
|
Name: "api",
|
||||||
Usage: "the api file",
|
Usage: "the api file",
|
||||||
},
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "force",
|
||||||
|
Usage: "force override the exist files",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: gogen.GoCommand,
|
Action: gogen.GoCommand,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user