feat(swagger): allow users to specify the generated swagger file name (#4809)

This commit is contained in:
shaouai
2025-04-27 23:34:52 +08:00
committed by GitHub
parent eafd11d949
commit 98bebbc74f
3 changed files with 19 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ package api
import (
"github.com/spf13/cobra"
"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/docgen"
@@ -103,6 +104,7 @@ func init() {
swaggerCmdFlags.StringVar(&swagger.VarStringAPI, "api")
swaggerCmdFlags.StringVar(&swagger.VarStringDir, "dir")
swaggerCmdFlags.StringVar(&swagger.VarStringFilename, "filename")
swaggerCmdFlags.BoolVar(&swagger.VarBoolYaml, "yaml")
validateCmdFlags.StringVar(&validate.VarStringAPI, "api")

View File

@@ -8,9 +8,10 @@ import (
"strings"
"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/util/pathx"
"gopkg.in/yaml.v2"
)
var (
@@ -20,6 +21,9 @@ var (
// VarStringDir specifies the directory to generate swagger file.
VarStringDir string
// VarStringFilename specifies the generated swagger file name without the extension.
VarStringFilename string
// VarBoolYaml specifies whether to generate a YAML file.
VarBoolYaml bool
)
@@ -57,9 +61,14 @@ func Command(_ *cobra.Command, _ []string) error {
return err
}
base := filepath.Base(VarStringAPI)
filename := VarStringFilename
if filename == "" {
base := filepath.Base(VarStringAPI)
filename = strings.TrimSuffix(base, filepath.Ext(base))
}
if VarBoolYaml {
filename := filepath.Join(VarStringDir, strings.TrimSuffix(base, filepath.Ext(base))+".yaml")
filePath := filepath.Join(VarStringDir, filename+".yaml")
var jsonObj interface{}
if err := yaml.Unmarshal(data, &jsonObj); err != nil {
@@ -70,10 +79,10 @@ func Command(_ *cobra.Command, _ []string) error {
if err != nil {
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)
}

View File

@@ -76,6 +76,7 @@
"short": "Generate swagger file from api",
"dir": "{{.goctl.api.dir}}",
"api": "{{.goctl.api.api}}",
"filename": "The generated swagger file name without the extension",
"yaml": "Generate swagger yaml file, default to json"
}
},