@@ -30,6 +30,7 @@ import cc.suitalk.arbitrarygen.tools.RuntimeContextHelper
3030import cc.suitalk.arbitrarygen.utils.FileOperation
3131import cc.suitalk.arbitrarygen.utils.JSONArgsUtils
3232import cc.suitalk.arbitrarygen.utils.Log
33+ import cc.suitalk.arbitrarygen.utils.Util
3334import cc.suitalk.moduleapi.ag.extension.ModuleApiAGContextExtension
3435import cc.suitalk.moduleapi.ag.extension.ModuleApiTaskProcessor
3536import groovy.json.JsonBuilder
@@ -75,45 +76,21 @@ class ModuleApiPlugin implements Plugin<Project> {
7576
7677 extension = project. extensions. create(" moduleApi" , ModuleApiPluginExtension )
7778 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)
8682 }
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())
10987 }
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")} '"
11091
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" ))
11794
11895 if (srcDir == null || ! srcDir. exists() || destDir == null ) {
11996 println (" project: ${ this.project} do not exists moduleApi srcDir or destDir." )
@@ -282,7 +259,68 @@ class ModuleApiPlugin implements Plugin<Project> {
282259 }
283260 context. initialize(initArgs);
284261 context. execute();
262+
285263 Log . close();
286264 }
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+ }
287325}
288326
0 commit comments