@@ -16,7 +16,7 @@ import (
1616type GenerateConfig struct {
1717 Dir string
1818 TplType string
19- ModuleName string
19+ Module string
2020 ModulePath string
2121 WirePath string
2222 SwaggerPath string
@@ -29,7 +29,7 @@ func Generate(cfg GenerateConfig) *GenerateAction {
2929 cfg : & cfg ,
3030 fs : tfs .Ins ,
3131 rootImportPath : parser .GetRootImportPath (cfg .Dir ),
32- moduleImportPath : parser .GetModuleImportPath (cfg .Dir , cfg .ModulePath , cfg .ModuleName ),
32+ moduleImportPath : parser .GetModuleImportPath (cfg .Dir , cfg .ModulePath , cfg .Module ),
3333 UtilImportPath : parser .GetUtilImportPath (cfg .Dir , cfg .ModulePath ),
3434 }
3535}
@@ -85,32 +85,45 @@ func (a *GenerateAction) RunWithStruct(ctx context.Context, s *schema.S) error {
8585}
8686
8787func (a * GenerateAction ) run (ctx context.Context , data []* schema.S ) error {
88+ moduleMap := make (map [string ]bool )
89+
8890 for _ , d := range data {
91+ if d .Module == "" && a .cfg .Module == "" {
92+ return fmt .Errorf ("Struct %s module is empty" , d .Name )
93+ }
94+
95+ if d .Module == "" {
96+ d .Module = a .cfg .Module
97+ }
98+ if ! moduleMap [d .Module ] {
99+ moduleMap [d .Module ] = true
100+ }
89101 if err := a .generate (ctx , d ); err != nil {
90102 return err
91103 }
92-
93104 if d .GenerateFE {
94105 if err := a .generateFE (ctx , d ); err != nil {
95106 return err
96107 }
97108 }
98109 }
99110
100- modsTplData , err := parser .ModifyModsFile (ctx , parser.BasicArgs {
101- Dir : a .cfg .Dir ,
102- ModuleName : a .cfg .ModuleName ,
103- ModulePath : a .cfg .ModulePath ,
104- Flag : parser .AstFlagGen ,
105- })
106- if err != nil {
107- a .logger .Errorf ("Failed to modify mods file, err: %s" , err )
108- return err
109- }
111+ for module := range moduleMap {
112+ modsTplData , err := parser .ModifyModsFile (ctx , parser.BasicArgs {
113+ Dir : a .cfg .Dir ,
114+ ModuleName : module ,
115+ ModulePath : a .cfg .ModulePath ,
116+ Flag : parser .AstFlagGen ,
117+ })
118+ if err != nil {
119+ a .logger .Errorf ("Failed to modify mods file, err: %s" , err )
120+ return err
121+ }
110122
111- err = a .write (ctx , a .cfg .ModuleName , "" , parser .FileForMods , modsTplData , false )
112- if err != nil {
113- return err
123+ err = a .write (ctx , module , "" , parser .FileForMods , modsTplData , false )
124+ if err != nil {
125+ return err
126+ }
114127 }
115128
116129 return a .execWireAndSwag (ctx )
@@ -200,7 +213,6 @@ func (a *GenerateAction) write(ctx context.Context, moduleName, structName, tpl
200213func (a * GenerateAction ) generate (ctx context.Context , dataItem * schema.S ) error {
201214 dataItem = dataItem .Format ()
202215 dataItem .RootImportPath = a .rootImportPath
203- dataItem .ModuleName = a .cfg .ModuleName
204216 dataItem .ModuleImportPath = a .moduleImportPath
205217 dataItem .UtilImportPath = a .UtilImportPath
206218
@@ -217,15 +229,15 @@ func (a *GenerateAction) generate(ctx context.Context, dataItem *schema.S) error
217229 return err
218230 }
219231
220- err = a .write (ctx , dataItem .ModuleName , dataItem .Name , parser .StructPackageTplPaths [pkgName ], tplData , ! dataItem .ForceWrite )
232+ err = a .write (ctx , dataItem .Module , dataItem .Name , parser .StructPackageTplPaths [pkgName ], tplData , ! dataItem .ForceWrite )
221233 if err != nil {
222234 return err
223235 }
224236 }
225237
226238 basicArgs := parser.BasicArgs {
227239 Dir : a .cfg .Dir ,
228- ModuleName : dataItem .ModuleName ,
240+ ModuleName : dataItem .Module ,
229241 ModulePath : a .cfg .ModulePath ,
230242 StructName : dataItem .Name ,
231243 GenPackages : genPackages ,
@@ -238,7 +250,7 @@ func (a *GenerateAction) generate(ctx context.Context, dataItem *schema.S) error
238250 return err
239251 }
240252
241- err = a .write (ctx , dataItem .ModuleName , dataItem .Name , parser .FileForModuleMain , moduleMainTplData , false )
253+ err = a .write (ctx , dataItem .Module , dataItem .Name , parser .FileForModuleMain , moduleMainTplData , false )
242254 if err != nil {
243255 return err
244256 }
@@ -249,7 +261,7 @@ func (a *GenerateAction) generate(ctx context.Context, dataItem *schema.S) error
249261 return err
250262 }
251263
252- err = a .write (ctx , dataItem .ModuleName , dataItem .Name , parser .FileForModuleWire , moduleWireTplData , false )
264+ err = a .write (ctx , dataItem .Module , dataItem .Name , parser .FileForModuleWire , moduleWireTplData , false )
253265 if err != nil {
254266 return err
255267 }
0 commit comments