diff --git a/tools/goctl/api/cmd.go b/tools/goctl/api/cmd.go index 5eec842b9..3c24e1da1 100644 --- a/tools/goctl/api/cmd.go +++ b/tools/goctl/api/cmd.go @@ -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") diff --git a/tools/goctl/api/swagger/command.go b/tools/goctl/api/swagger/command.go index 2c011a7d0..47c3658da 100644 --- a/tools/goctl/api/swagger/command.go +++ b/tools/goctl/api/swagger/command.go @@ -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) } diff --git a/tools/goctl/internal/flags/default_en.json b/tools/goctl/internal/flags/default_en.json index ce0c784cf..8f315d389 100644 --- a/tools/goctl/internal/flags/default_en.json +++ b/tools/goctl/internal/flags/default_en.json @@ -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" } },