mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-07 15:10:01 +08:00
feat(swagger): allow users to specify the generated swagger file name (#4809)
This commit is contained in:
@@ -2,6 +2,7 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/api/apigen"
|
"github.com/zeromicro/go-zero/tools/goctl/api/apigen"
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/api/dartgen"
|
"github.com/zeromicro/go-zero/tools/goctl/api/dartgen"
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/api/docgen"
|
"github.com/zeromicro/go-zero/tools/goctl/api/docgen"
|
||||||
@@ -103,6 +104,7 @@ func init() {
|
|||||||
|
|
||||||
swaggerCmdFlags.StringVar(&swagger.VarStringAPI, "api")
|
swaggerCmdFlags.StringVar(&swagger.VarStringAPI, "api")
|
||||||
swaggerCmdFlags.StringVar(&swagger.VarStringDir, "dir")
|
swaggerCmdFlags.StringVar(&swagger.VarStringDir, "dir")
|
||||||
|
swaggerCmdFlags.StringVar(&swagger.VarStringFilename, "filename")
|
||||||
swaggerCmdFlags.BoolVar(&swagger.VarBoolYaml, "yaml")
|
swaggerCmdFlags.BoolVar(&swagger.VarBoolYaml, "yaml")
|
||||||
|
|
||||||
validateCmdFlags.StringVar(&validate.VarStringAPI, "api")
|
validateCmdFlags.StringVar(&validate.VarStringAPI, "api")
|
||||||
|
|||||||
@@ -8,9 +8,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"gopkg.in/yaml.v2"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/pkg/parser/api/parser"
|
"github.com/zeromicro/go-zero/tools/goctl/pkg/parser/api/parser"
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||||
"gopkg.in/yaml.v2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -20,6 +21,9 @@ var (
|
|||||||
// VarStringDir specifies the directory to generate swagger file.
|
// VarStringDir specifies the directory to generate swagger file.
|
||||||
VarStringDir string
|
VarStringDir string
|
||||||
|
|
||||||
|
// VarStringFilename specifies the generated swagger file name without the extension.
|
||||||
|
VarStringFilename string
|
||||||
|
|
||||||
// VarBoolYaml specifies whether to generate a YAML file.
|
// VarBoolYaml specifies whether to generate a YAML file.
|
||||||
VarBoolYaml bool
|
VarBoolYaml bool
|
||||||
)
|
)
|
||||||
@@ -57,9 +61,14 @@ func Command(_ *cobra.Command, _ []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
base := filepath.Base(VarStringAPI)
|
filename := VarStringFilename
|
||||||
|
if filename == "" {
|
||||||
|
base := filepath.Base(VarStringAPI)
|
||||||
|
filename = strings.TrimSuffix(base, filepath.Ext(base))
|
||||||
|
}
|
||||||
|
|
||||||
if VarBoolYaml {
|
if VarBoolYaml {
|
||||||
filename := filepath.Join(VarStringDir, strings.TrimSuffix(base, filepath.Ext(base))+".yaml")
|
filePath := filepath.Join(VarStringDir, filename+".yaml")
|
||||||
|
|
||||||
var jsonObj interface{}
|
var jsonObj interface{}
|
||||||
if err := yaml.Unmarshal(data, &jsonObj); err != nil {
|
if err := yaml.Unmarshal(data, &jsonObj); err != nil {
|
||||||
@@ -70,10 +79,10 @@ func Command(_ *cobra.Command, _ []string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return os.WriteFile(filename, data, 0644)
|
return os.WriteFile(filePath, data, 0644)
|
||||||
}
|
}
|
||||||
// generate json swagger file
|
|
||||||
filename := filepath.Join(VarStringDir, strings.TrimSuffix(base, filepath.Ext(base))+".json")
|
|
||||||
|
|
||||||
return os.WriteFile(filename, data, 0644)
|
// generate json swagger file
|
||||||
|
filePath := filepath.Join(VarStringDir, filename+".json")
|
||||||
|
return os.WriteFile(filePath, data, 0644)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,7 @@
|
|||||||
"short": "Generate swagger file from api",
|
"short": "Generate swagger file from api",
|
||||||
"dir": "{{.goctl.api.dir}}",
|
"dir": "{{.goctl.api.dir}}",
|
||||||
"api": "{{.goctl.api.api}}",
|
"api": "{{.goctl.api.api}}",
|
||||||
|
"filename": "The generated swagger file name without the extension",
|
||||||
"yaml": "Generate swagger yaml file, default to json"
|
"yaml": "Generate swagger yaml file, default to json"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user