From 6334ee195891e13e249417eed8f13ff50b68346f Mon Sep 17 00:00:00 2001 From: oldme <45782393+oldme-git@users.noreply.github.com> Date: Sat, 27 Dec 2025 19:50:21 +0800 Subject: [PATCH] feat(cmd/gf): improve and enhance gen ctrl (#4325) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 介绍 有时候某些项目没有达到要使用大仓模式的程度,使用单仓便可以完成业务。 但是`gf gen ctrl` 只能支持 `module/version` 这种目录,譬如 `user/v1`,像`api/app/user/v1`,`api/admin/admin/v1` 这种接口便无能为力。 **本`PR`改进了生成模式,现在使其可以更灵活的生成控制器,包括多级目录生成。** ## 例子 在 `api` 下定义了 `app` 和 `admin` 两个模块,其中 `app` 下又定义了 `/user/v1` 和 `/user/user_ext/v1`,最后生成如红框所示: ![image](https://github.com/user-attachments/assets/67db2f1c-8873-44c8-83ee-8620cfeb07e8) 这是一个复杂的例子,用来检测代码的健壮性。 在真实的项目中,应该类似 `api/app/user/v1`,`api/app/user_ext/v1`。 ## 其他 - 规范了一些测试用例,譬如本来的测试文件放在 `/testdata/genctrl` 和 `/testdata/genctrl-merge` 中,现在更改为 `/testdata/genctrl/default` 和 `/testdata/genctrl/merge`; - 替换掉废弃的方法 `gfile.Remove`。 增进来源:Issue和官网评论 --------- Co-authored-by: hailaz <739476267@qq.com> --- .../internal/cmd/cmd_z_unit_gen_ctrl_test.go | 134 +++++++++++++++--- cmd/gf/internal/cmd/genctrl/genctrl.go | 71 +++++++--- .../api/article/article_expect.go | 4 +- .../{ => default}/api/article/v1/edit.go | 0 .../{ => default}/api/article/v1/get.go | 0 .../{ => default}/api/article/v2/edit.go | 0 .../controller/article/article.go | 0 .../controller/article/article_new.go | 2 +- .../controller/article/article_v1_create.go | 2 +- .../controller/article/article_v1_get_list.go | 2 +- .../controller/article/article_v1_get_one.go | 2 +- .../controller/article/article_v1_update.go | 2 +- .../controller/article/article_v2_create.go | 2 +- .../controller/article/article_v2_update.go | 2 +- .../api/dict/dict_add_new_ctrl_expect.gotest | 2 +- .../add_new_ctrl/api/dict/dict_expect.go | 2 +- .../add_new_ctrl/api/dict/v1/dict_type.go | 0 .../add_new_ctrl/controller/dict/dict.go | 0 .../add_new_ctrl/controller/dict/dict_new.go | 2 +- .../controller/dict/dict_v1_dict_type.go | 2 +- .../controller/dict/dict_v1_test_new.gotest | 2 +- .../api/dict/dict_add_new_ctrl_expect.gotest | 2 +- .../add_new_file/api/dict/dict_expect.go | 2 +- .../add_new_file/api/dict/v1/dict_type.go | 0 .../add_new_file/controller/dict/dict.go | 0 .../add_new_file/controller/dict/dict_new.go | 2 +- .../controller/dict/dict_v1_dict_type.go | 2 +- .../controller/dict/dict_v1_test_new.gotest | 2 +- .../multi/api/admin/article/article_expect.go | 15 ++ .../multi/api/admin/article/v1/edit.go | 19 +++ .../multi/api/admin/user/user_expect.go | 15 ++ .../genctrl/multi/api/admin/user/v1/edit.go | 19 +++ .../genctrl/multi/api/app/user/user_expect.go | 16 +++ .../api/app/user/user_ext/user_ext_expect.go | 16 +++ .../multi/api/app/user/user_ext/v1/edit.go | 28 ++++ .../genctrl/multi/api/app/user/v1/edit.go | 28 ++++ .../multi/controller/admin/article/article.go | 5 + .../controller/admin/article/article_new.go | 15 ++ .../admin/article/article_v1_create.go | 15 ++ .../multi/controller/admin/user/user.go | 5 + .../multi/controller/admin/user/user_new.go | 15 ++ .../controller/admin/user/user_v1_create.go | 15 ++ .../genctrl/multi/controller/app/user/user.go | 5 + .../controller/app/user/user_ext/user_ext.go | 5 + .../app/user/user_ext/user_ext_new.go | 15 ++ .../app/user/user_ext/user_ext_v1_create.go | 15 ++ .../app/user/user_ext/user_ext_v1_update.go | 14 ++ .../multi/controller/app/user/user_new.go | 15 ++ .../controller/app/user/user_v1_create.go | 15 ++ .../controller/app/user/user_v1_update.go | 14 ++ 50 files changed, 511 insertions(+), 56 deletions(-) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/api/article/article_expect.go (82%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/api/article/v1/edit.go (100%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/api/article/v1/get.go (100%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/api/article/v2/edit.go (100%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article.go (100%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_new.go (84%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v1_create.go (77%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v1_get_list.go (76%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v1_get_one.go (76%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v1_update.go (76%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v2_create.go (76%) rename cmd/gf/internal/cmd/testdata/genctrl/{ => default}/controller/article/article_v2_update.go (76%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest (89%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/api/dict/dict_expect.go (87%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/api/dict/v1/dict_type.go (100%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/controller/dict/dict.go (100%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/controller/dict/dict_new.go (85%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/controller/dict/dict_v1_dict_type.go (83%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_ctrl/controller/dict/dict_v1_test_new.gotest (88%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest (89%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/api/dict/dict_expect.go (87%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/api/dict/v1/dict_type.go (100%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/controller/dict/dict.go (100%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/controller/dict/dict_new.go (85%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/controller/dict/dict_v1_dict_type.go (83%) rename cmd/gf/internal/cmd/testdata/{genctrl-merge => genctrl/merge}/add_new_file/controller/dict/dict_v1_test_new.gotest (83%) create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/article_expect.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/v1/edit.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/user_expect.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/v1/edit.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_expect.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/user_ext_expect.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1/edit.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/v1/edit.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_new.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_v1_create.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_new.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_v1_create.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_new.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_create.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_update.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_new.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_create.go create mode 100644 cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_update.go diff --git a/cmd/gf/internal/cmd/cmd_z_unit_gen_ctrl_test.go b/cmd/gf/internal/cmd/cmd_z_unit_gen_ctrl_test.go index 55986b480..3fd9dfd1d 100644 --- a/cmd/gf/internal/cmd/cmd_z_unit_gen_ctrl_test.go +++ b/cmd/gf/internal/cmd/cmd_z_unit_gen_ctrl_test.go @@ -22,7 +22,7 @@ func Test_Gen_Ctrl_Default(t *testing.T) { gtest.C(t, func(t *gtest.T) { var ( path = gfile.Temp(guid.S()) - apiFolder = gtest.DataPath("genctrl", "api") + apiFolder = gtest.DataPath("genctrl", "default", "api") in = genctrl.CGenCtrlInput{ SrcFolder: apiFolder, DstFolder: path, @@ -39,7 +39,7 @@ func Test_Gen_Ctrl_Default(t *testing.T) { err = gfile.Mkdir(path) t.AssertNil(err) - defer gfile.Remove(path) + defer gfile.RemoveAll(path) _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) t.AssertNil(err) @@ -49,7 +49,7 @@ func Test_Gen_Ctrl_Default(t *testing.T) { genApi = apiFolder + filepath.FromSlash("/article/article.go") genApiExpect = apiFolder + filepath.FromSlash("/article/article_expect.go") ) - defer gfile.Remove(genApi) + defer gfile.RemoveAll(genApi) t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect)) // files @@ -67,7 +67,7 @@ func Test_Gen_Ctrl_Default(t *testing.T) { }) // content - testPath := gtest.DataPath("genctrl", "controller") + testPath := gtest.DataPath("genctrl", "default", "controller") expectFiles := []string{ testPath + filepath.FromSlash("/article/article.go"), testPath + filepath.FromSlash("/article/article_new.go"), @@ -84,6 +84,104 @@ func Test_Gen_Ctrl_Default(t *testing.T) { }) } +func Test_Gen_Ctrl_Default_Multi(t *testing.T) { + gtest.C(t, func(t *gtest.T) { + var ( + path = gfile.Temp(guid.S()) + apiFolder = gtest.DataPath("genctrl", "multi", "api") + in = genctrl.CGenCtrlInput{ + SrcFolder: apiFolder, + DstFolder: path, + WatchFile: "", + SdkPath: "", + SdkStdVersion: false, + SdkNoV1: false, + Clear: false, + Merge: false, + } + ) + + err := gutil.FillStructWithDefault(&in) + t.AssertNil(err) + + err = gfile.Mkdir(path) + t.AssertNil(err) + defer gfile.RemoveAll(path) + + _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) + t.AssertNil(err) + + // apiInterface file + var ( + genApiSlice = []string{ + apiFolder + filepath.FromSlash("/admin/article/article.go"), + apiFolder + filepath.FromSlash("/admin/user/user.go"), + apiFolder + filepath.FromSlash("/app/user/user.go"), + apiFolder + filepath.FromSlash("/app/user/user_ext/user_ext.go"), + } + genApiSliceExpect = []string{ + apiFolder + filepath.FromSlash("/admin/article/article_expect.go"), + apiFolder + filepath.FromSlash("/admin/user/user_expect.go"), + apiFolder + filepath.FromSlash("/app/user/user_expect.go"), + apiFolder + filepath.FromSlash("/app/user/user_ext/user_ext_expect.go"), + } + ) + + for i := range genApiSlice { + t.Assert(gfile.GetContents(genApiSlice[i]), gfile.GetContents(genApiSliceExpect[i])) + gfile.RemoveAll(genApiSlice[i]) + } + + // files + files, err := gfile.ScanDir(path, "*.go", true) + t.AssertNil(err) + t.Assert(files, []string{ + path + filepath.FromSlash("/admin/article/article.go"), + path + filepath.FromSlash("/admin/article/article_new.go"), + path + filepath.FromSlash("/admin/article/article_v1_create.go"), + + path + filepath.FromSlash("/admin/user/user.go"), + path + filepath.FromSlash("/admin/user/user_new.go"), + path + filepath.FromSlash("/admin/user/user_v1_create.go"), + + path + filepath.FromSlash("/app/user/user.go"), + path + filepath.FromSlash("/app/user/user_ext/user_ext.go"), + path + filepath.FromSlash("/app/user/user_ext/user_ext_new.go"), + path + filepath.FromSlash("/app/user/user_ext/user_ext_v1_create.go"), + path + filepath.FromSlash("/app/user/user_ext/user_ext_v1_update.go"), + + path + filepath.FromSlash("/app/user/user_new.go"), + path + filepath.FromSlash("/app/user/user_v1_create.go"), + path + filepath.FromSlash("/app/user/user_v1_update.go"), + }) + + // content + testPath := gtest.DataPath("genctrl", "multi", "controller") + expectFiles := []string{ + testPath + filepath.FromSlash("/admin/article/article.go"), + testPath + filepath.FromSlash("/admin/article/article_new.go"), + testPath + filepath.FromSlash("/admin/article/article_v1_create.go"), + + testPath + filepath.FromSlash("/admin/user/user.go"), + testPath + filepath.FromSlash("/admin/user/user_new.go"), + testPath + filepath.FromSlash("/admin/user/user_v1_create.go"), + + testPath + filepath.FromSlash("/app/user/user.go"), + testPath + filepath.FromSlash("/app/user/user_ext/user_ext.go"), + testPath + filepath.FromSlash("/app/user/user_ext/user_ext_new.go"), + testPath + filepath.FromSlash("/app/user/user_ext/user_ext_v1_create.go"), + testPath + filepath.FromSlash("/app/user/user_ext/user_ext_v1_update.go"), + + testPath + filepath.FromSlash("/app/user/user_new.go"), + testPath + filepath.FromSlash("/app/user/user_v1_create.go"), + testPath + filepath.FromSlash("/app/user/user_v1_update.go"), + } + for i := range files { + t.Assert(gfile.GetContents(files[i]), gfile.GetContents(expectFiles[i])) + } + }) +} + func expectFilesContent(t *gtest.T, paths []string, expectPaths []string) { for i, expectFile := range expectPaths { val := gfile.GetContents(paths[i]) @@ -98,8 +196,8 @@ func Test_Gen_Ctrl_UseMerge_AddNewFile(t *testing.T) { gtest.C(t, func(t *gtest.T) { var ( ctrlPath = gfile.Temp(guid.S()) - //ctrlPath = gtest.DataPath("issue", "3460", "controller") - apiFolder = gtest.DataPath("genctrl-merge", "add_new_file", "api") + // ctrlPath = gtest.DataPath("issue", "3460", "controller") + apiFolder = gtest.DataPath("genctrl", "merge", "add_new_file", "api") in = genctrl.CGenCtrlInput{ SrcFolder: apiFolder, DstFolder: ctrlPath, @@ -118,7 +216,7 @@ type DictTypeAddRes struct { err := gfile.Mkdir(ctrlPath) t.AssertNil(err) - defer gfile.Remove(ctrlPath) + defer gfile.RemoveAll(ctrlPath) _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) t.AssertNil(err) @@ -127,7 +225,7 @@ type DictTypeAddRes struct { genApi = filepath.Join(apiFolder, "/dict/dict.go") genApiExpect = filepath.Join(apiFolder, "/dict/dict_expect.go") ) - defer gfile.Remove(genApi) + defer gfile.RemoveAll(genApi) t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect)) genCtrlFiles, err := gfile.ScanDir(ctrlPath, "*.go", true) @@ -138,7 +236,7 @@ type DictTypeAddRes struct { filepath.Join(ctrlPath, "/dict/dict_v1_dict_type.go"), }) - expectCtrlPath := gtest.DataPath("genctrl-merge", "add_new_file", "controller") + expectCtrlPath := gtest.DataPath("genctrl", "merge", "add_new_file", "controller") expectFiles := []string{ filepath.Join(expectCtrlPath, "/dict/dict.go"), filepath.Join(expectCtrlPath, "/dict/dict_new.go"), @@ -152,7 +250,7 @@ type DictTypeAddRes struct { newApiFilePath := filepath.Join(apiFolder, "/dict/v1/test_new.go") err = gfile.PutContents(newApiFilePath, testNewApiFile) t.AssertNil(err) - defer gfile.Remove(newApiFilePath) + defer gfile.RemoveAll(newApiFilePath) // Then execute the command _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) @@ -179,8 +277,8 @@ func Test_Gen_Ctrl_UseMerge_AddNewCtrl(t *testing.T) { gtest.C(t, func(t *gtest.T) { var ( ctrlPath = gfile.Temp(guid.S()) - //ctrlPath = gtest.DataPath("issue", "3460", "controller") - apiFolder = gtest.DataPath("genctrl-merge", "add_new_ctrl", "api") + // ctrlPath = gtest.DataPath("issue", "3460", "controller") + apiFolder = gtest.DataPath("genctrl", "merge", "add_new_ctrl", "api") in = genctrl.CGenCtrlInput{ SrcFolder: apiFolder, DstFolder: ctrlPath, @@ -190,7 +288,7 @@ func Test_Gen_Ctrl_UseMerge_AddNewCtrl(t *testing.T) { err := gfile.Mkdir(ctrlPath) t.AssertNil(err) - defer gfile.Remove(ctrlPath) + defer gfile.RemoveAll(ctrlPath) _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) t.AssertNil(err) @@ -199,7 +297,7 @@ func Test_Gen_Ctrl_UseMerge_AddNewCtrl(t *testing.T) { genApi = filepath.Join(apiFolder, "/dict/dict.go") genApiExpect = filepath.Join(apiFolder, "/dict/dict_expect.go") ) - defer gfile.Remove(genApi) + defer gfile.RemoveAll(genApi) t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect)) genCtrlFiles, err := gfile.ScanDir(ctrlPath, "*.go", true) @@ -210,7 +308,7 @@ func Test_Gen_Ctrl_UseMerge_AddNewCtrl(t *testing.T) { filepath.Join(ctrlPath, "/dict/dict_v1_dict_type.go"), }) - expectCtrlPath := gtest.DataPath("genctrl-merge", "add_new_ctrl", "controller") + expectCtrlPath := gtest.DataPath("genctrl", "merge", "add_new_ctrl", "controller") expectFiles := []string{ filepath.Join(expectCtrlPath, "/dict/dict.go"), filepath.Join(expectCtrlPath, "/dict/dict_new.go"), @@ -236,7 +334,7 @@ type DictTypeAddRes struct { err = gfile.PutContentsAppend(dictModuleFileName, testNewApiFile) t.AssertNil(err) - //================================== + // ================================== // Then execute the command _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) t.AssertNil(err) @@ -262,7 +360,7 @@ func Test_Gen_Ctrl_UseMerge_Issue3460(t *testing.T) { gtest.C(t, func(t *gtest.T) { var ( ctrlPath = gfile.Temp(guid.S()) - //ctrlPath = gtest.DataPath("issue", "3460", "controller") + // ctrlPath = gtest.DataPath("issue", "3460", "controller") apiFolder = gtest.DataPath("issue", "3460", "api") in = genctrl.CGenCtrlInput{ SrcFolder: apiFolder, @@ -278,7 +376,7 @@ func Test_Gen_Ctrl_UseMerge_Issue3460(t *testing.T) { err := gfile.Mkdir(ctrlPath) t.AssertNil(err) - defer gfile.Remove(ctrlPath) + defer gfile.RemoveAll(ctrlPath) _, err = genctrl.CGenCtrl{}.Ctrl(ctx, in) t.AssertNil(err) diff --git a/cmd/gf/internal/cmd/genctrl/genctrl.go b/cmd/gf/internal/cmd/genctrl/genctrl.go index 71771f593..35352fcd4 100644 --- a/cmd/gf/internal/cmd/genctrl/genctrl.go +++ b/cmd/gf/internal/cmd/genctrl/genctrl.go @@ -89,28 +89,11 @@ func (c CGenCtrl) Ctrl(ctx context.Context, in CGenCtrlInput) (out *CGenCtrlOutp if !gfile.Exists(in.SrcFolder) { mlog.Fatalf(`source folder path "%s" does not exist`, in.SrcFolder) } - // retrieve all api modules. - apiModuleFolderPaths, err := gfile.ScanDir(in.SrcFolder, "*", false) + + err = c.generateByModules(in) if err != nil { return nil, err } - for _, apiModuleFolderPath := range apiModuleFolderPaths { - if !gfile.IsDir(apiModuleFolderPath) { - continue - } - // generate go files by api module. - var ( - module = gfile.Basename(apiModuleFolderPath) - dstModuleFolderPath = gfile.Join(in.DstFolder, module) - ) - err = c.generateByModule( - apiModuleFolderPath, dstModuleFolderPath, in.SdkPath, - in.SdkStdVersion, in.SdkNoV1, in.Clear, in.Merge, - ) - if err != nil { - return nil, err - } - } mlog.Print(`done!`) return @@ -163,6 +146,56 @@ func (c CGenCtrl) generateByWatchFile(watchFile, sdkPath string, sdkStdVersion, ) } +// generateByModules recursively calls generateByModule for multi-level modules generation. +func (c CGenCtrl) generateByModules(in CGenCtrlInput) (err error) { + // read root folder, example: api/user or api/app + moduleFolderPaths, err := gfile.ScanDir(in.SrcFolder, "*", false) + if err != nil { + return err + } + for _, moduleFolder := range moduleFolderPaths { + if !gfile.IsDir(moduleFolder) { + continue + } + + // read children folder, example: api/user/v1 or api/app/user + childrenFolderPaths, err := gfile.ScanDir(moduleFolder, "*", false) + if err != nil { + return err + } + for _, childrenFolderPath := range childrenFolderPaths { + if !gfile.IsDir(childrenFolderPath) { + continue + } + + var ( + inCopy = in + module = gfile.Basename(moduleFolder) + ) + inCopy.SrcFolder = gfile.Join(in.SrcFolder, module) + inCopy.DstFolder = gfile.Join(in.DstFolder, module) + err = c.generateByModules(inCopy) + if err != nil { + return err + } + } + + // generate go files by api module. + var ( + module = gfile.Basename(moduleFolder) + dstModuleFolderPath = gfile.Join(in.DstFolder, module) + ) + err = c.generateByModule( + moduleFolder, dstModuleFolderPath, in.SdkPath, + in.SdkStdVersion, in.SdkNoV1, in.Clear, in.Merge, + ) + if err != nil { + return err + } + } + return +} + // parseApiModule parses certain api and generate associated go files by certain module, not all api modules. func (c CGenCtrl) generateByModule( apiModuleFolderPath, dstModuleFolderPath, sdkPath string, diff --git a/cmd/gf/internal/cmd/testdata/genctrl/api/article/article_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/default/api/article/article_expect.go similarity index 82% rename from cmd/gf/internal/cmd/testdata/genctrl/api/article/article_expect.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/api/article/article_expect.go index 3fd161752..ea193c77d 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/api/article/article_expect.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/api/article/article_expect.go @@ -7,8 +7,8 @@ package article import ( "context" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v1" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v2" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v2" ) type IArticleV1 interface { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/api/article/v1/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v1/edit.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl/api/article/v1/edit.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v1/edit.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl/api/article/v1/get.go b/cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v1/get.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl/api/article/v1/get.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v1/get.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl/api/article/v2/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v2/edit.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl/api/article/v2/edit.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/api/article/v2/edit.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_new.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_new.go similarity index 84% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_new.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_new.go index d6b85c986..19355350b 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_new.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_new.go @@ -5,7 +5,7 @@ package article import ( - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article" ) type ControllerV1 struct{} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_create.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_create.go similarity index 77% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_create.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_create.go index f5e39b5af..1feb329c8 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_create.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_create.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v1" ) // Create add title. diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_list.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_list.go similarity index 76% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_list.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_list.go index 9f9b3cd88..650177a58 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_list.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_list.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v1" ) func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_one.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_one.go similarity index 76% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_one.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_one.go index 8b20a1dba..62aece2ee 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_get_one.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_get_one.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v1" ) func (c *ControllerV1) GetOne(ctx context.Context, req *v1.GetOneReq) (res *v1.GetOneRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_update.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_update.go similarity index 76% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_update.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_update.go index d01e8b865..4d4e4feb7 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v1_update.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v1_update.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v1" ) func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_create.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_create.go similarity index 76% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_create.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_create.go index 319407967..4ea4185b1 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_create.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_create.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v2" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v2" ) func (c *ControllerV2) Create(ctx context.Context, req *v2.CreateReq) (res *v2.CreateRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_update.go b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_update.go similarity index 76% rename from cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_update.go rename to cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_update.go index 25a9d03ab..4d47fc8ef 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl/controller/article/article_v2_update.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/default/controller/article/article_v2_update.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/api/article/v2" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/default/api/article/v2" ) func (c *ControllerV2) Update(ctx context.Context, req *v2.UpdateReq) (res *v2.UpdateRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest similarity index 89% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest index f6a0a55f7..0588aa284 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest @@ -7,7 +7,7 @@ package dict import ( "context" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1" ) type IDictV1 interface { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_expect.go similarity index 87% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_expect.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_expect.go index 8c69b527c..41036e9ae 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_expect.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/dict_expect.go @@ -7,7 +7,7 @@ package dict import ( "context" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1" ) type IDictV1 interface { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1/dict_type.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1/dict_type.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1/dict_type.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1/dict_type.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_new.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_new.go similarity index 85% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_new.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_new.go index cf966e0f2..38e2ab2d5 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_new.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_new.go @@ -5,7 +5,7 @@ package dict import ( - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict" ) type ControllerV1 struct{} diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go similarity index 83% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go index 56b407945..6675ef860 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1" ) func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest similarity index 88% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest index 12c2fad89..5f741b281 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1" ) func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest similarity index 89% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest index f6a0a55f7..0588aa284 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest @@ -7,7 +7,7 @@ package dict import ( "context" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_ctrl/api/dict/v1" ) type IDictV1 interface { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_expect.go similarity index 87% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_expect.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_expect.go index c41eb0571..8fd91c940 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_expect.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/dict_expect.go @@ -7,7 +7,7 @@ package dict import ( "context" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/v1" ) type IDictV1 interface { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1/dict_type.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/v1/dict_type.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1/dict_type.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/v1/dict_type.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict.go similarity index 100% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict.go diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_new.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_new.go similarity index 85% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_new.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_new.go index 8cf1e87fc..afb9ecb7c 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_new.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_new.go @@ -5,7 +5,7 @@ package dict import ( - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict" ) type ControllerV1 struct{} diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_dict_type.go b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_dict_type.go similarity index 83% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_dict_type.go rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_dict_type.go index 507d8e4be..1d0d41913 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_dict_type.go +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_dict_type.go @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/v1" ) func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_test_new.gotest b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_test_new.gotest similarity index 83% rename from cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_test_new.gotest rename to cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_test_new.gotest index 13cac3c7c..7ceead760 100644 --- a/cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_test_new.gotest +++ b/cmd/gf/internal/cmd/testdata/genctrl/merge/add_new_file/controller/dict/dict_v1_test_new.gotest @@ -6,7 +6,7 @@ import ( "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1" + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/merge/add_new_file/api/dict/v1" ) func (c *ControllerV1) DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error) { diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/article_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/article_expect.go new file mode 100644 index 000000000..be3f52f9f --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/article_expect.go @@ -0,0 +1,15 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package article + +import ( + "context" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/article/v1" +) + +type IArticleV1 interface { + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/v1/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/v1/edit.go new file mode 100644 index 000000000..d8171bee8 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/article/v1/edit.go @@ -0,0 +1,19 @@ +// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package v1 + +import "github.com/gogf/gf/v2/frame/g" + +type ( + // CreateReq add title. + CreateReq struct { + g.Meta `path:"/article/create" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + CreateRes struct{} +) diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/user_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/user_expect.go new file mode 100644 index 000000000..d51d3abba --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/user_expect.go @@ -0,0 +1,15 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package user + +import ( + "context" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/user/v1" +) + +type IUserV1 interface { + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/v1/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/v1/edit.go new file mode 100644 index 000000000..d8171bee8 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/admin/user/v1/edit.go @@ -0,0 +1,19 @@ +// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package v1 + +import "github.com/gogf/gf/v2/frame/g" + +type ( + // CreateReq add title. + CreateReq struct { + g.Meta `path:"/article/create" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + CreateRes struct{} +) diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_expect.go new file mode 100644 index 000000000..094fbf261 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_expect.go @@ -0,0 +1,16 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package user + +import ( + "context" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/v1" +) + +type IUserV1 interface { + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) + Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/user_ext_expect.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/user_ext_expect.go new file mode 100644 index 000000000..652c4c93b --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/user_ext_expect.go @@ -0,0 +1,16 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package user_ext + +import ( + "context" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1" +) + +type IUserExtV1 interface { + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) + Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1/edit.go new file mode 100644 index 000000000..195ceda0f --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1/edit.go @@ -0,0 +1,28 @@ +// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package v1 + +import "github.com/gogf/gf/v2/frame/g" + +type ( + // CreateReq add title. + CreateReq struct { + g.Meta `path:"/article/create" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + CreateRes struct{} +) + +type ( + UpdateReq struct { + g.Meta `path:"/article/update" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + UpdateRes struct{} +) diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/v1/edit.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/v1/edit.go new file mode 100644 index 000000000..195ceda0f --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/api/app/user/v1/edit.go @@ -0,0 +1,28 @@ +// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package v1 + +import "github.com/gogf/gf/v2/frame/g" + +type ( + // CreateReq add title. + CreateReq struct { + g.Meta `path:"/article/create" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + CreateRes struct{} +) + +type ( + UpdateReq struct { + g.Meta `path:"/article/update" method:"post" tags:"ArticleService"` + Title string `v:"required"` + } + + UpdateRes struct{} +) diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article.go new file mode 100644 index 000000000..4bd478c5d --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package article diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_new.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_new.go new file mode 100644 index 000000000..d50928fc7 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package article + +import ( + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/article" +) + +type ControllerV1 struct{} + +func NewV1() article.IArticleV1 { + return &ControllerV1{} +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_v1_create.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_v1_create.go new file mode 100644 index 000000000..c54f57119 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/article/article_v1_create.go @@ -0,0 +1,15 @@ +package article + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/article/v1" +) + +// Create add title. +func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user.go new file mode 100644 index 000000000..8220c1afe --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_new.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_new.go new file mode 100644 index 000000000..df3736d3b --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user + +import ( + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/user" +) + +type ControllerV1 struct{} + +func NewV1() user.IUserV1 { + return &ControllerV1{} +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_v1_create.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_v1_create.go new file mode 100644 index 000000000..3d2f0cc3c --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/admin/user/user_v1_create.go @@ -0,0 +1,15 @@ +package user + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/admin/user/v1" +) + +// Create add title. +func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user.go new file mode 100644 index 000000000..8220c1afe --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext.go new file mode 100644 index 000000000..6c073a867 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user_ext diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_new.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_new.go new file mode 100644 index 000000000..cdad023ba --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user_ext + +import ( + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext" +) + +type ControllerV1 struct{} + +func NewV1() user_ext.IUserExtV1 { + return &ControllerV1{} +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_create.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_create.go new file mode 100644 index 000000000..37047ef9e --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_create.go @@ -0,0 +1,15 @@ +package user_ext + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1" +) + +// Create add title. +func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_update.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_update.go new file mode 100644 index 000000000..9f8e4a8f2 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_ext/user_ext_v1_update.go @@ -0,0 +1,14 @@ +package user_ext + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/user_ext/v1" +) + +func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_new.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_new.go new file mode 100644 index 000000000..bc64f4ec4 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package user + +import ( + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user" +) + +type ControllerV1 struct{} + +func NewV1() user.IUserV1 { + return &ControllerV1{} +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_create.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_create.go new file mode 100644 index 000000000..69b6e82d7 --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_create.go @@ -0,0 +1,15 @@ +package user + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/v1" +) + +// Create add title. +func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_update.go b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_update.go new file mode 100644 index 000000000..747a7a73c --- /dev/null +++ b/cmd/gf/internal/cmd/testdata/genctrl/multi/controller/app/user/user_v1_update.go @@ -0,0 +1,14 @@ +package user + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl/multi/api/app/user/v1" +) + +func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +}