From 3ee5c96776d97de52faf9005538630571690592a Mon Sep 17 00:00:00 2001 From: Peter Kanev Date: Thu, 10 Aug 2017 17:11:43 +0300 Subject: [PATCH 1/2] filter out webpacked workers before parsing the scripts in the ASBG --- .../project/build.gradle | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/android-static-binding-generator/project/build.gradle b/android-static-binding-generator/project/build.gradle index 0f58311d7..38f41785b 100644 --- a/android-static-binding-generator/project/build.gradle +++ b/android-static-binding-generator/project/build.gradle @@ -14,6 +14,15 @@ def cachedJarsFilePath = "$projectDir/cached.txt" def jsParserP = "$projectDir/parser/js_parser.js" def jsFilesParametersP = "$projectDir/jsFilesParameters.txt" +def webpackWorkersExcludePath = "$projectDir/../../src/main/assets/app/__worker-chunks.json" +def webpackWorkersExcludesList; + +def workersExcludeFile = file(webpackWorkersExcludePath); +def filterWorkerFiles = false; +if (workersExcludeFile.exists()) { + filterWorkerFiles = true; + webpackWorkersExcludesList = new JsonSlurper().parseText(workersExcludeFile.text) +} //def absoluteOutDir = new File("./outDir")//project.outDir @@ -113,10 +122,17 @@ traverseDirectory = { dir, traverseExplicitly -> } currentDir.eachFile(FileType.FILES) { File f -> - def file = f.getAbsolutePath(); - if (file.substring(file.length() - 3, file.length()).equals(".js")) { - logger.info("Task: traverseDirectory: Visiting JavaScript file: " + f.getName()) - inputJsFiles.add(f.getAbsolutePath()) + def currFile = f.getAbsolutePath(); + if (currFile.substring(currFile.length() - 3, currFile.length()).equals(".js")) { + // Read __worker-chunks.json file containing a list of webpacked workers + // ignore worker scripts, so as to not attempt to generate bindings for them + if (filterWorkerFiles) { + if (webpackWorkersExcludesList.any{element -> file(element).getAbsolutePath() == currFile}) { + return + } + } + + inputJsFiles.add(currFile) } } From ab356c864d60046fe42920984d41ece9bf227cfe Mon Sep 17 00:00:00 2001 From: Peter Kanev Date: Tue, 15 Aug 2017 14:01:41 +0300 Subject: [PATCH 2/2] refactor javascript files collecting task in ASBG --- .../project/build.gradle | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/android-static-binding-generator/project/build.gradle b/android-static-binding-generator/project/build.gradle index 38f41785b..c6b7947dc 100644 --- a/android-static-binding-generator/project/build.gradle +++ b/android-static-binding-generator/project/build.gradle @@ -15,18 +15,18 @@ def jsParserP = "$projectDir/parser/js_parser.js" def jsFilesParametersP = "$projectDir/jsFilesParameters.txt" def webpackWorkersExcludePath = "$projectDir/../../src/main/assets/app/__worker-chunks.json" -def webpackWorkersExcludesList; +def webpackWorkersExcludesList = []; def workersExcludeFile = file(webpackWorkersExcludePath); -def filterWorkerFiles = false; if (workersExcludeFile.exists()) { - filterWorkerFiles = true; - webpackWorkersExcludesList = new JsonSlurper().parseText(workersExcludeFile.text) + // in case the file exists but is malformed + try { + webpackWorkersExcludesList = new JsonSlurper().parseText(workersExcludeFile.text) + } catch (all) { + println "Malformed workers exclude file at ${webpackWorkersExcludePath}" + } } - -//def absoluteOutDir = new File("./outDir")//project.outDir - def absoluteOutDir; if (project.hasProperty("outDir")) { absoluteOutDir = project.outDir; @@ -123,15 +123,7 @@ traverseDirectory = { dir, traverseExplicitly -> currentDir.eachFile(FileType.FILES) { File f -> def currFile = f.getAbsolutePath(); - if (currFile.substring(currFile.length() - 3, currFile.length()).equals(".js")) { - // Read __worker-chunks.json file containing a list of webpacked workers - // ignore worker scripts, so as to not attempt to generate bindings for them - if (filterWorkerFiles) { - if (webpackWorkersExcludesList.any{element -> file(element).getAbsolutePath() == currFile}) { - return - } - } - + if (isJsFile(currFile) && !isWorkerScript(currFile)) { inputJsFiles.add(currFile) } } @@ -141,6 +133,15 @@ traverseDirectory = { dir, traverseExplicitly -> } } +def isJsFile = { fileName -> return fileName.substring(fileName.length() - 3, fileName.length()).equals(".js") +} + +def isWorkerScript = { fileName -> + // Read __worker-chunks.json file containing a list of webpacked workers + // ignore worker scripts, so as to not attempt to generate bindings for them + return webpackWorkersExcludesList.any{element -> file(element).getAbsolutePath() == fileName} +} + task traverseJsFilesArgs << { //(jsCodeDir, bindingsFilePath, interfaceNamesFilePath, jsParserPath, jsFilesParameter) { jsCodeAbsolutePath = jsCodeDir; inputJsFiles = new LinkedList();