diff --git a/tools/goctl/internal/flags/default_en.json b/tools/goctl/internal/flags/default_en.json index 6fe8f903ee99..af50f84aa7cb 100644 --- a/tools/goctl/internal/flags/default_en.json +++ b/tools/goctl/internal/flags/default_en.json @@ -208,6 +208,8 @@ "cache": "Generate code with cache [optional]", "easy": "Generate code with auto generated CollectionName for easy declare [optional]", "dir": "{{.goctl.model.dir}}", + "auto-package": "Whether to automatically use the name of the directory where the build file is located as the package name [optional,default=false]\nIt is mainly used to be compatible with previous versions,If this parameter is set to false, the package name is set to model by default", + "package": "Manually specify the package name, which takes precedence over VarBoolPkgAuto [optional]", "style": "{{.global.style}}", "home": "{{.global.home}}", "remote": "{{.global.remote}}", diff --git a/tools/goctl/model/cmd.go b/tools/goctl/model/cmd.go index 50619d76cd4e..7adc334d7e13 100644 --- a/tools/goctl/model/cmd.go +++ b/tools/goctl/model/cmd.go @@ -64,6 +64,8 @@ func init() { mongoCmdFlags.BoolVarP(&mongo.VarBoolCache, "cache", "c") mongoCmdFlags.BoolVarP(&mongo.VarBoolEasy, "easy", "e") mongoCmdFlags.StringVarP(&mongo.VarStringDir, "dir", "d") + mongoCmdFlags.BoolVarP(&mongo.VarBoolAutoPackage, "auto-package", "a") + mongoCmdFlags.StringVarP(&mongo.VarStringPackage, "package", "p") mongoCmdFlags.StringVar(&mongo.VarStringStyle, "style") mongoCmdFlags.StringVar(&mongo.VarStringHome, "home") mongoCmdFlags.StringVar(&mongo.VarStringRemote, "remote") diff --git a/tools/goctl/model/mongo/generate/generate.go b/tools/goctl/model/mongo/generate/generate.go index 9b9f09c4bfe2..1a75403b220c 100644 --- a/tools/goctl/model/mongo/generate/generate.go +++ b/tools/goctl/model/mongo/generate/generate.go @@ -20,6 +20,7 @@ type Context struct { Easy bool Output string Cfg *config.Config + PackageName string } // Do executes model template and output the result into the specified file path @@ -61,6 +62,7 @@ func generateModel(ctx *Context) error { "lowerType": stringx.From(t).Untitle(), "Cache": ctx.Cache, "version": version.BuildVersion, + "PackageName": ctx.PackageName, }, output, true); err != nil { return err } @@ -88,6 +90,7 @@ func generateCustomModel(ctx *Context) error { "snakeType": stringx.From(t).ToSnake(), "Cache": ctx.Cache, "Easy": ctx.Easy, + "PackageName": ctx.PackageName, }, output, false) if err != nil { return err @@ -112,6 +115,7 @@ func generateTypes(ctx *Context) error { output := filepath.Join(ctx.Output, fn+".go") if err = util.With("model").Parse(text).GoFmt(true).SaveTo(map[string]any{ "Type": stringx.From(t).Title(), + "PackageName": ctx.PackageName, }, output, false); err != nil { return err } @@ -128,5 +132,7 @@ func generateError(ctx *Context) error { output := filepath.Join(ctx.Output, "error.go") - return util.With("error").Parse(text).GoFmt(true).SaveTo(ctx, output, false) + return util.With("error").Parse(text).GoFmt(true).SaveTo(map[string]any{ + "PackageName": ctx.PackageName, + }, output, false) } diff --git a/tools/goctl/model/mongo/mongo.go b/tools/goctl/model/mongo/mongo.go index fd7c37a21bf5..1c79bec3d052 100644 --- a/tools/goctl/model/mongo/mongo.go +++ b/tools/goctl/model/mongo/mongo.go @@ -17,6 +17,12 @@ var ( VarStringSliceType []string // VarStringDir describes an output directory. VarStringDir string + //VarBoolAutoPackage Default false; + // - Whether to automatically use the name of the directory where the build file is located as the package name + // - It is mainly used to be compatible with previous versions,If this parameter is set to false, the package name is set to model by default + VarBoolAutoPackage bool + //VarStringPackage Manually specify the package name, which takes precedence over VarBoolPkgAuto + VarStringPackage string // VarBoolCache describes whether cache is enabled. VarBoolCache bool // VarBoolEasy describes whether to generate Collection Name in the code for easy declare. @@ -66,16 +72,25 @@ func Action(_ *cobra.Command, _ []string) error { if err != nil { return err } - if err = pathx.MkdirIfNotExist(a); err != nil { return err } + var pkg string + if VarStringPackage != "" { + pkg = VarStringPackage + } else if VarBoolAutoPackage { + pkg = file.SafeString(filepath.Base(a)) + } else { + pkg = "model" + } + return generate.Do(&generate.Context{ - Types: tp, - Cache: c, - Easy: easy, - Output: a, - Cfg: cfg, + Types: tp, + Cache: c, + Easy: easy, + Output: a, + Cfg: cfg, + PackageName: pkg, }) } diff --git a/tools/goctl/model/mongo/readme.md b/tools/goctl/model/mongo/readme.md index 87969f87eb11..109ee12e149b 100644 --- a/tools/goctl/model/mongo/readme.md +++ b/tools/goctl/model/mongo/readme.md @@ -191,15 +191,20 @@ Usage: goctl model mongo [flags] Flags: - --branch string The branch of the remote repo, it does work with --remote - -c, --cache Generate code with cache [optional] - -d, --dir string The target dir - -h, --help help for mongo - --home string The goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority - --remote string The remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority - The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory structure - --style string The file naming format, see [https://github.com/zeromicro/go-zero/tree/master/tools/goctl/config/readme.md] - -t, --type strings Specified model type name + -a, --auto-package Whether to automatically use the name of the directory where the build file is located as the package name [optional,default=false] + It is mainly used to be compatible with previous versions,If this parameter is set to false, the package name is set to model by default + --branch string The branch of the remote repo, it does work with --remote + -c, --cache Generate code with cache [optional] + -d, --dir string The target dir + -e, --easy Generate code with auto generated CollectionName for easy declare [optional] + -h, --help help for mongo + --home string The goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority + -p, --package string Manually specify the package name, which takes precedence over VarBoolPkgAuto [optional] + --remote string The remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority + The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory structure + --style string The file naming format, see [https://github.com/zeromicro/go-zero/blob/master/tools/goctl/config/readme.md] + -t, --type strings Specified model type name + ``` diff --git a/tools/goctl/model/mongo/template/error.tpl b/tools/goctl/model/mongo/template/error.tpl index 27d9244976ae..b2f0f8dd7689 100644 --- a/tools/goctl/model/mongo/template/error.tpl +++ b/tools/goctl/model/mongo/template/error.tpl @@ -1,4 +1,4 @@ -package model +package {{.PackageName}} import ( "errors" diff --git a/tools/goctl/model/mongo/template/model.tpl b/tools/goctl/model/mongo/template/model.tpl index 6f8fa83d26d1..02b350155147 100644 --- a/tools/goctl/model/mongo/template/model.tpl +++ b/tools/goctl/model/mongo/template/model.tpl @@ -1,7 +1,7 @@ // Code generated by goctl. DO NOT EDIT. // goctl {{.version}} -package model +package {{.PackageName}} import ( "context" diff --git a/tools/goctl/model/mongo/template/model_custom.tpl b/tools/goctl/model/mongo/template/model_custom.tpl index 31fa86536925..82dc6431bc4e 100644 --- a/tools/goctl/model/mongo/template/model_custom.tpl +++ b/tools/goctl/model/mongo/template/model_custom.tpl @@ -1,4 +1,4 @@ -package model +package {{.PackageName}} {{if .Cache}}import ( "github.com/zeromicro/go-zero/core/stores/cache" diff --git a/tools/goctl/model/mongo/template/types.tpl b/tools/goctl/model/mongo/template/types.tpl index 8da006f44353..60993a7f6a31 100644 --- a/tools/goctl/model/mongo/template/types.tpl +++ b/tools/goctl/model/mongo/template/types.tpl @@ -1,4 +1,4 @@ -package model +package {{.PackageName}} import ( "time"