@@ -30,6 +30,7 @@ import cc.suitalk.arbitrarygen.tools.RuntimeContextHelper
30
30
import cc.suitalk.arbitrarygen.utils.FileOperation
31
31
import cc.suitalk.arbitrarygen.utils.JSONArgsUtils
32
32
import cc.suitalk.arbitrarygen.utils.Log
33
+ import cc.suitalk.arbitrarygen.utils.Util
33
34
import cc.suitalk.moduleapi.ag.extension.ModuleApiAGContextExtension
34
35
import cc.suitalk.moduleapi.ag.extension.ModuleApiTaskProcessor
35
36
import groovy.json.JsonBuilder
@@ -75,45 +76,21 @@ class ModuleApiPlugin implements Plugin<Project> {
75
76
76
77
extension = project. extensions. create(" moduleApi" , ModuleApiPluginExtension )
77
78
project. afterEvaluate {
78
- def moduleApiClosure = this . project[" moduleApi" ]
79
- if (moduleApiClosure == null ) {
80
- println (" closure moduleApi is null, skip" )
81
- return
82
- }
83
- if (moduleApiClosure. srcDir == null || moduleApiClosure. destDir == null ) {
84
- println (" project(${ project.name} ), moduleApi.srcDir or moduleApi.destDir is null" )
85
- return
79
+ JSONObject initArg = getArgsFromExtension(this . project)
80
+ if (initArg == null ) {
81
+ initArg = getArgsFromConfigFile(this . project)
86
82
}
87
- JSONObject initArg = new JSONObject ();
88
- initArg. put(" srcDir" , (moduleApiClosure. srcDir == null ? " " : moduleApiClosure. srcDir))
89
- initArg. put(" destDir" , (moduleApiClosure. destDir == null ? " " : moduleApiClosure. destDir))
90
- initArg. put(" templateDir" , (moduleApiClosure. templateDir == null ? " " : moduleApiClosure. templateDir))
91
- if (extension. makeApiRules != null && extension. makeApiRules. length > 0 ) {
92
- JSONArray jsonArray = new JSONArray ();
93
- for (String rule : extension. makeApiRules) {
94
- jsonArray. add(rule)
95
- }
96
- initArg. put(" makeApiRules" , jsonArray)
97
- }
98
- if (extension. logger != null ) {
99
- JsonBuilder jsonBuilder = new JsonBuilder ()
100
- jsonBuilder {
101
- logger extension. logger
102
- }
103
- println (" ModuleApi : ${ jsonBuilder.toString()} " )
104
- JSONObject loggerJson = JSONObject . fromObject(jsonBuilder. toString())
105
- if (! loggerJson. isNullObject() && ! loggerJson. isEmpty()) {
106
- initArg. put(" logger" , loggerJson. get(" logger" ))
107
- }
108
-
83
+ if (initArg == null ) {
84
+ initArg = new JSONObject ();
85
+ initArg. put(" srcDir" , " ${ this.project.projectDir.absolutePath} /src/main/api" . toString())
86
+ initArg. put(" destDir" , " ${ this.project.rootProject.projectDir.absolutePath} /api/src/main/api" . toString())
109
87
}
88
+ println " moduleApi(${ this.project.name} ) srcDir : '${ initArg.getString("srcDir")} '"
89
+ println " moduleApi(${ this.project.name} ) destDir : '${ initArg.getString("destDir")} '"
90
+ println " moduleApi(${ this.project.name} ) makeApiRules : '${ initArg.get("makeApiRules")} '"
110
91
111
- println " moduleApi(${ this.project.name} ) srcDir : '${ moduleApiClosure.srcDir} '"
112
- println " moduleApi(${ this.project.name} ) destDir : '${ moduleApiClosure.destDir} '"
113
- println " moduleApi(${ this.project.name} ) makeApiRules : '${ moduleApiClosure.makeApiRules} '"
114
-
115
- File srcDir = this . project. file(moduleApiClosure. srcDir)
116
- File destDir = this . project. file(moduleApiClosure. destDir)
92
+ File srcDir = this . project. file(initArg. getString(" srcDir" ))
93
+ File destDir = this . project. file(initArg. getString(" destDir" ))
117
94
118
95
if (srcDir == null || ! srcDir. exists() || destDir == null ) {
119
96
println (" project: ${ this.project} do not exists moduleApi srcDir or destDir." )
@@ -282,7 +259,68 @@ class ModuleApiPlugin implements Plugin<Project> {
282
259
}
283
260
context. initialize(initArgs);
284
261
context. execute();
262
+
285
263
Log . close();
286
264
}
265
+
266
+ JSONObject getArgsFromConfigFile (Project project ) {
267
+ String shellCode = FileOperation . read(" ${ project.rootDir.absolutePath} /.config/module-api.ag-conf" )
268
+ if (shellCode == null || shellCode. length() == 0 ) {
269
+ println (" shellCode is null or nil, config file path : ${ project.rootDir.absolutePath} /.config/module-api.ag-conf" )
270
+ return null
271
+ }
272
+ Binding binding = new Binding ()
273
+ binding. setProperty(" project" , project)
274
+ binding. setProperty(" name" , project. name)
275
+ binding. setProperty(" rootDir" , project. rootDir)
276
+ binding. setProperty(" projectDir" , project. projectDir. absolutePath)
277
+ binding. setProperty(" buildDir" , project. buildDir. absolutePath)
278
+
279
+ GroovyShell groovyShell = new GroovyShell (binding)
280
+ StringBuilder builder = new StringBuilder ()
281
+ builder. append(" import groovy.json.JsonBuilder\n " )
282
+ builder. append(" JsonBuilder moduleApi = new JsonBuilder()\n " )
283
+ builder. append(shellCode)
284
+ builder. append(" \n " )
285
+ builder. append(" moduleApi.toString()" )
286
+ Object result = groovyShell. evaluate(builder. toString())
287
+ return JSONObject . fromObject(result. toString())
288
+ }
289
+
290
+ JSONObject getArgsFromExtension (Project project ) {
291
+ def moduleApiClosure = project[" moduleApi" ]
292
+ if (moduleApiClosure == null ) {
293
+ println (" getArgsFromExtension, closure moduleApi is null, skip" )
294
+ return null
295
+ }
296
+ if (moduleApiClosure. srcDir == null || moduleApiClosure. destDir == null ) {
297
+ println (" getArgsFromExtension, project(${ project.name} ), moduleApi.srcDir or moduleApi.destDir is null" )
298
+ return null
299
+ }
300
+ JSONObject initArg = new JSONObject ();
301
+ initArg. put(" srcDir" , (moduleApiClosure. srcDir == null ? " " : moduleApiClosure. srcDir))
302
+ initArg. put(" destDir" , (moduleApiClosure. destDir == null ? " " : moduleApiClosure. destDir))
303
+ initArg. put(" templateDir" , (moduleApiClosure. templateDir == null ? " " : moduleApiClosure. templateDir))
304
+ if (moduleApiClosure. makeApiRules != null && moduleApiClosure. makeApiRules. length > 0 ) {
305
+ JSONArray jsonArray = new JSONArray ();
306
+ for (String rule : moduleApiClosure. makeApiRules) {
307
+ jsonArray. add(rule)
308
+ }
309
+ initArg. put(" makeApiRules" , jsonArray)
310
+ }
311
+ if (moduleApiClosure. logger != null ) {
312
+ JsonBuilder jsonBuilder = new JsonBuilder ()
313
+ jsonBuilder {
314
+ logger moduleApiClosure. logger
315
+ }
316
+ println (" ModuleApi : ${ jsonBuilder.toString()} " )
317
+ JSONObject loggerJson = JSONObject . fromObject(jsonBuilder. toString())
318
+ if (! loggerJson. isNullObject() && ! loggerJson. isEmpty()) {
319
+ initArg. put(" logger" , loggerJson. get(" logger" ))
320
+ }
321
+
322
+ }
323
+ return initArg
324
+ }
287
325
}
288
326
0 commit comments