@@ -173,38 +173,62 @@ dependencies {
173173// /////////////////////////// CONFIGURATION PHASE //////////////////////////////////
174174// //////////////////////////////////////////////////////////////////////////////////
175175
176- def createIncludeFile (filePath , fileName ) {
176+ def createIncludeFile (filePath , fileName , dimensionName ) {
177177 println " \t +creating include.gradle file for: " + filePath
178178 def defaultIncludeFile = new File (filePath, " include.gradle" )
179179 defaultIncludeFile. write " "
180180 defaultIncludeFile << " android { \n "
181181 defaultIncludeFile << " \t productFlavors {\n "
182182 defaultIncludeFile << ' \t\t "' + fileName + ' " {\n '
183- defaultIncludeFile << ' \t\t\t dimension "' + fileName + ' "\n '
183+ defaultIncludeFile << ' \t\t\t dimension "' + dimensionName + ' "\n '
184184 defaultIncludeFile << " \t\t }\n "
185185 defaultIncludeFile << " \t }\n "
186186 defaultIncludeFile << " }"
187187}
188188
189+ def sanatizeDimensionName (str ) {
190+ return str. replaceAll(/ [\W ]/ , " " )
191+ }
192+
193+ // make sure the include.gradle file, produced by the user, has only allowed characters in dimension attribute and remove any invalid characters if necessary
194+ def updateIncludeGradleFile (subFile , dimensionName ) {
195+ def igFile = new File (subFile. getAbsolutePath())
196+ def newContent = igFile. text. replaceAll(/ dimension\s ["|'](.+)["|'']/ ) { fullMatch , fDimension ->
197+ def newFg = sanatizeDimensionName(fDimension)
198+ dimensionName = newFg
199+ return " dimension \" $newFg \" "
200+ }
201+ igFile. text = newContent
202+
203+ return dimensionName
204+ }
205+
189206task createDefaultIncludeFiles {
190- description " creates default include.gradle files for added plugins if necessary "
207+ description " creates default include.gradle files for added plugins IF NECESSARY "
191208 println " $configStage createDefaultIncludeFiles"
192209 def ft = file(configurationsDir)
193210
194211 ft. listFiles(). each { fl ->
212+
195213 if (fl. isDirectory()) {
214+ def fileName = fl. name
215+ def dimensionName = sanatizeDimensionName(fileName)
196216 createPluginConfigFile = true
197- pluginNames. add(' "' + fl. name + ' "' )
198-
199217 def foundIncludeFile = false
218+
219+ println " \t +found plugins: " + fileName
200220 fl. listFiles(). each { subFile ->
221+
201222 if (subFile. name == " include.gradle" ) {
202223 foundIncludeFile = true
224+ dimensionName = updateIncludeGradleFile(subFile, dimensionName)
203225 }
204226 }
205227
228+ pluginNames. add(' "' + dimensionName + ' "' )
229+
206230 if (! foundIncludeFile) {
207- createIncludeFile(fl. getAbsolutePath() ,fl . name )
231+ createIncludeFile(fl. getAbsolutePath() ,fileName, dimensionName )
208232 }
209233 }
210234 }
@@ -222,7 +246,6 @@ task createPluginsConfigFile {
222246 if (createPluginConfigFile) {
223247 println " \t +creating product flavors include.gradle file in $configurationsDir folder..."
224248 def flavors = pluginNames. join(" ," )
225- println " \t +found plugins: " + flavors
226249 flavorsFile << " android { \n "
227250 flavorsFile << " \t flavorDimensions " + flavors + " \n "
228251 flavorsFile << " }\n "
0 commit comments