Skip to content

Commit 8cce130

Browse files
committed
locating assets files
1 parent 13a785f commit 8cce130

File tree

6 files changed

+387
-12
lines changed

6 files changed

+387
-12
lines changed

src/main/kotlin/StringCare.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ open class StringCare : Plugin<Project> {
155155
}
156156

157157
open class Configuration(var name: String) {
158+
var assetsFiles = mutableListOf<String>()
158159
var stringFiles = mutableListOf<String>()
159160
var srcFolders = mutableListOf<String>()
160161
var debug = false

src/main/kotlin/components/AParser.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package components
2+
3+
import StringCare.*
4+
import models.AssetsFile
5+
import java.io.File
6+
7+
fun locateAssetsFiles(projectPath: String, configuration: Configuration): List<AssetsFile> {
8+
if (configuration.debug) {
9+
println("== ASSETS FILES FOUND ======================================")
10+
}
11+
return File(projectPath).walkTopDown()
12+
.filterIndexed { _, file ->
13+
file.validForAssetsConfiguration(configuration.normalize())
14+
}.map {
15+
it.assetsFile(configuration.normalize())!!
16+
}.toList()
17+
}

src/main/kotlin/components/Extensions.kt

Lines changed: 83 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import StringCare.VariantApplicationId
55
import StringCare.Configuration
66
import StringCare.Extension
77
import groovy.json.StringEscapeUtils
8+
import models.AssetsFile
89
import models.ResourceFile
910
import org.gradle.api.Project
1011
import org.gradle.api.Task
@@ -74,9 +75,9 @@ fun String.androidTreatment(): String {
7475
return values.joinToString(separator = " ")
7576
}
7677

77-
fun File.validForConfiguration(configuration: Configuration): Boolean {
78+
fun File.validForXMLConfiguration(configuration: Configuration): Boolean {
7879
var valid = this.absolutePath.contains("${File.separator}${configuration.name}${File.separator}")
79-
&& excluded().not()
80+
&& excludedForXML().not()
8081
if (valid) {
8182
valid = false
8283
configuration.srcFolders.forEach { folder ->
@@ -105,19 +106,43 @@ fun File.validForConfiguration(configuration: Configuration): Boolean {
105106
}
106107
}
107108
}
108-
if (configuration.debug && excluded().not()) {
109+
if (configuration.debug && excludedForXML().not()) {
109110
println("${if (valid) "" else "❌ not"} valid file ${this.absolutePath}")
110111
}
111112
return valid
112113
}
113114

114-
fun File.excluded(): Boolean {
115-
val exclude = listOf(
116-
"/build/",
117-
"/.git/",
118-
"/.gradle/",
119-
"/gradle/"
120-
)
115+
fun File.validForAssetsConfiguration(configuration: Configuration): Boolean {
116+
var valid = this.absolutePath.contains("${File.separator}${configuration.name}${File.separator}")
117+
&& excludedForAssets().not()
118+
if (valid) {
119+
valid = false
120+
if (configuration.assetsFiles.isEmpty()) {
121+
valid = true
122+
} else {
123+
configuration.assetsFiles.forEach { file ->
124+
if (this.absolutePath.normalizePath().endsWith("${File.separator}$file".normalizePath())
125+
|| (file.contains("*.")
126+
&& this.absolutePath.normalizePath().endsWith(file.replace("*","")))) {
127+
valid = true
128+
}
129+
}
130+
}
131+
}
132+
if (configuration.debug && excludedForAssets().not()) {
133+
println("${if (valid) "" else "❌ not"} valid file ${this.absolutePath}")
134+
}
135+
return valid
136+
}
137+
138+
val exclude = listOf(
139+
"/build/",
140+
"/.git/",
141+
"/.gradle/",
142+
"/gradle/"
143+
)
144+
145+
fun File.excludedForXML(): Boolean {
121146
var valid = true
122147
exclude.forEach { value ->
123148
when {
@@ -127,6 +152,16 @@ fun File.excluded(): Boolean {
127152
return (valid && this.isDirectory.not() && this.absolutePath.contains(".xml")).not()
128153
}
129154

155+
fun File.excludedForAssets(): Boolean {
156+
var valid = true
157+
exclude.forEach { value ->
158+
when {
159+
this.absolutePath.contains(value.normalizePath()) -> valid = false
160+
}
161+
}
162+
return (valid && this.isDirectory.not() && this.absolutePath.contains("${File.separator}assets${File.separator}")).not()
163+
}
164+
130165
fun File.resourceFile(configuration: Configuration): ResourceFile? {
131166
var sourceFolder = ""
132167
var validFile: File? = null
@@ -161,6 +196,44 @@ fun File.resourceFile(configuration: Configuration): ResourceFile? {
161196
return if (valid) ResourceFile(validFile!!, sourceFolder, configuration.name) else null
162197
}
163198

199+
fun File.assetsFile(configuration: Configuration): AssetsFile? {
200+
var sourceFolder = ""
201+
var validFile: File? = null
202+
var valid = false
203+
configuration.srcFolders.forEach { folder ->
204+
if (this.absolutePath.contains(
205+
"${File.separator}$folder${File.separator}".replace(
206+
"${File.separator}${File.separator}",
207+
File.separator
208+
)
209+
)
210+
) {
211+
sourceFolder = folder
212+
valid = true
213+
}
214+
}
215+
if (valid) {
216+
valid = false
217+
if (configuration.assetsFiles.isEmpty()) {
218+
valid = true
219+
validFile = this
220+
} else {
221+
configuration.assetsFiles.forEach { file ->
222+
if (this.absolutePath.normalizePath().endsWith("${File.separator}$file".normalizePath())
223+
|| (file.contains("*.")
224+
&& this.absolutePath.normalizePath().endsWith(file.replace("*","")))) {
225+
valid = true
226+
validFile = this
227+
}
228+
}
229+
}
230+
}
231+
if (configuration.debug && excludedForAssets().not()) {
232+
println(if (valid) validFile?.getContent() else "")
233+
}
234+
return if (valid) AssetsFile(validFile!!, sourceFolder, configuration.name) else null
235+
}
236+
164237
fun Project.absolutePath(): String = this.file(wrapperWindows).absolutePath.replace(
165238
wrapperWindows,
166239
emptyChar

src/main/kotlin/components/XParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import java.io.File
88

99
fun locateFiles(projectPath: String, configuration: Configuration): List<ResourceFile> {
1010
if (configuration.debug) {
11-
println("== FILES FOUND ======================================")
11+
println("== RESOURCE FILES FOUND ======================================")
1212
}
1313
return File(projectPath).walkTopDown()
1414
.filterIndexed { _, file ->
15-
file.validForConfiguration(configuration.normalize())
15+
file.validForXMLConfiguration(configuration.normalize())
1616
}.map {
1717
it.resourceFile(configuration.normalize())!!
1818
}.toList()

src/main/kotlin/models/AssetsFile.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package models
2+
3+
import java.io.File
4+
5+
data class AssetsFile(val file: File, val sourceFolder: String, val module: String)

0 commit comments

Comments
 (0)