Skip to content

Commit 57c0428

Browse files
authored
Merge pull request #4 from StringCare/develop
Develop
2 parents 05ea4ae + 3fe7b45 commit 57c0428

15 files changed

+445
-81
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group 'com.stringcare'
9-
version '3.3'
9+
version '3.4'
1010

1111
def siteUrl = 'https://github.com/StringCare/KotlinGradlePlugin'
1212
def gitUrl = 'https://github.com/StringCare/KotlinGradlePlugin.git'

src/main/kotlin/StringCare.kt

+82-31
Original file line numberDiff line numberDiff line change
@@ -43,32 +43,25 @@ open class StringCare : Plugin<Project> {
4343

4444
this.project.afterEvaluate {
4545
extension.modules.forEach { module ->
46-
when {
47-
module.stringFiles.isNotEmpty() && module.srcFolders.isNotEmpty() -> {
48-
moduleMap[module.name] = Configuration(module.name).apply {
49-
stringFiles.addAll(module.stringFiles)
50-
srcFolders.addAll(module.srcFolders)
51-
debug = extension.debug
52-
}
53-
}
54-
module.srcFolders.isNotEmpty() -> {
55-
moduleMap[module.name] = Configuration(module.name).apply {
56-
stringFiles.addAll(defaultConfig().stringFiles)
57-
srcFolders.addAll(module.srcFolders)
58-
debug = extension.debug
59-
}
60-
}
61-
module.stringFiles.isNotEmpty() -> {
62-
moduleMap[module.name] = Configuration(module.name).apply {
63-
stringFiles.addAll(module.stringFiles)
64-
srcFolders.addAll(defaultConfig().srcFolders)
65-
debug = extension.debug
66-
}
67-
}
46+
moduleMap[module.name] = Configuration(module.name).apply {
47+
debug = extension.debug
48+
}
49+
if (module.srcFolders.isNotEmpty()) {
50+
moduleMap[module.name]!!.srcFolders.addAll(module.srcFolders)
51+
}
52+
if (module.stringFiles.isNotEmpty()) {
53+
moduleMap[module.name]!!.stringFiles.addAll(module.stringFiles)
54+
}
55+
if (module.assetsFiles.isNotEmpty()) {
56+
moduleMap[module.name]!!.assetsFiles.addAll(module.assetsFiles)
57+
}
58+
59+
if (moduleMap[module.name]!!.srcFolders.isEmpty()) {
60+
moduleMap[module.name]!!.srcFolders.addAll(defaultConfig().srcFolders)
61+
}
62+
if (moduleMap[module.name]!!.stringFiles.isEmpty()) {
63+
moduleMap[module.name]!!.stringFiles.addAll(defaultConfig().stringFiles)
6864
}
69-
}
70-
if (moduleMap.isEmpty()) {
71-
moduleMap[defaultMainModule] = defaultConfig().normalize()
7265
}
7366
this.project.registerTask()
7467
}
@@ -95,13 +88,14 @@ open class StringCare : Plugin<Project> {
9588
PrintUtils.print(module, "$variant:$key")
9689
PrintUtils.print(module, backupStringRes)
9790
moduleMap[module]?.let { configuration ->
98-
backupFiles(absoluteProjectPath, configuration)
91+
backupResourceFiles(absoluteProjectPath, configuration)
9992
}
10093

10194
moduleMap[module]?.let { configuration ->
102-
val files = locateFiles(absoluteProjectPath, configuration)
95+
val files = locateResourceFiles(absoluteProjectPath, configuration)
10396
files.forEach { file ->
104-
modifyXML(file.file, extension.main_module, key, extension.debug,
97+
modifyXML(
98+
file.file, extension.main_module, key, extension.debug,
10599
variantOrFlavor?.applicationId ?: ""
106100
)
107101
}
@@ -114,9 +108,9 @@ open class StringCare : Plugin<Project> {
114108
}
115109
PrintUtils.print(module, "$variant:$key")
116110
PrintUtils.print(module, backupStringRes)
117-
backupFiles(absoluteProjectPath, defaultConfiguration)
111+
backupResourceFiles(absoluteProjectPath, defaultConfiguration)
118112
PrintUtils.print(module, obfuscateStringRes)
119-
val files = locateFiles(absoluteProjectPath, defaultConfiguration)
113+
val files = locateResourceFiles(absoluteProjectPath, defaultConfiguration)
120114
files.forEach { file ->
121115
modifyXML(file.file, extension.main_module, key, extension.debug)
122116
}
@@ -126,14 +120,70 @@ open class StringCare : Plugin<Project> {
126120

127121
},
128122
mergeResourcesFinish = { module, variant ->
123+
PrintUtils.print(module, restoreStringRes)
124+
val variantOrFlavor = extension.variants.find {
125+
variant.toLowerCase().contains(it.name.toLowerCase())
126+
}
127+
if (variantOrFlavor != null && variantOrFlavor.skip) {
128+
return@ExecutionListener
129+
}
130+
restoreResourceFiles(absoluteProjectPath, module)
131+
},
132+
mergeAssetsStart = { module, variant ->
133+
fingerPrint(module, variant, extension.debug) { key ->
134+
if ("none" == key) {
135+
return@fingerPrint
136+
}
137+
when {
138+
moduleMap.containsKey(module) -> {
139+
val variantOrFlavor = extension.variants.find {
140+
variant.toLowerCase().contains(it.name.toLowerCase())
141+
}
142+
if (variantOrFlavor != null && variantOrFlavor.skip) {
143+
PrintUtils.print(module, "Skipping $variant")
144+
return@fingerPrint
145+
}
146+
147+
PrintUtils.print(module, "$variant:$key")
148+
PrintUtils.print(module, backupAssets)
149+
moduleMap[module]?.let { configuration ->
150+
backupAssetsFiles(absoluteProjectPath, configuration)
151+
}
152+
153+
moduleMap[module]?.let { configuration ->
154+
val files = locateAssetsFiles(absoluteProjectPath, configuration)
155+
files.forEach { file ->
156+
if (extension.debug) {
157+
PrintUtils.print(null, file.file.getContent())
158+
}
159+
obfuscateFile(
160+
extension.main_module,
161+
key,
162+
file.file,
163+
variantOrFlavor?.applicationId ?: ""
164+
)
165+
if (extension.debug) {
166+
PrintUtils.print(null, file.file.getContent())
167+
}
168+
}
169+
}
170+
PrintUtils.print(module, obfuscateAssets)
171+
}
172+
}
173+
}
174+
175+
},
176+
mergeAssetsFinish = { module, variant ->
177+
PrintUtils.print(module, restoreAssets)
129178
val variantOrFlavor = extension.variants.find {
130179
variant.toLowerCase().contains(it.name.toLowerCase())
131180
}
132181
if (variantOrFlavor != null && variantOrFlavor.skip) {
133182
return@ExecutionListener
134183
}
135-
restoreFiles(absoluteProjectPath, module)
184+
restoreAssetsFiles(absoluteProjectPath, module)
136185
}
186+
137187
))
138188
}
139189

@@ -155,6 +205,7 @@ open class StringCare : Plugin<Project> {
155205
}
156206

157207
open class Configuration(var name: String) {
208+
var assetsFiles = mutableListOf<String>()
158209
var stringFiles = mutableListOf<String>()
159210
var srcFolders = mutableListOf<String>()
160211
var debug = false

src/main/kotlin/components/AParser.kt

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package components
2+
3+
import StringCare.*
4+
import models.AssetsFile
5+
import models.ResourceFile
6+
import java.io.File
7+
8+
fun locateAssetsFiles(projectPath: String, configuration: Configuration): List<AssetsFile> {
9+
if (configuration.debug) {
10+
println("== ASSETS FILES FOUND ======================================")
11+
}
12+
return File(projectPath).walkTopDown()
13+
.filterIndexed { _, file ->
14+
file.validForAssetsConfiguration(configuration.normalize())
15+
}.map {
16+
it.assetsFile(configuration.normalize())!!
17+
}.toList()
18+
}
19+
20+
fun backupAssetsFiles(projectPath: String, configuration: Configuration): List<AssetsFile> {
21+
val files = locateAssetsFiles(projectPath, configuration.normalize())
22+
files.forEach { resource ->
23+
resource.backup()
24+
}
25+
return files
26+
}
27+
28+
fun restoreAssetsFiles(projectPath: String, module: String): List<File> {
29+
val resourceFiles = File("${StringCare.tempFolder}${File.separator}$module")
30+
.walkTopDown().toList().filter { file ->
31+
!file.isDirectory
32+
}.map {
33+
it.restore(projectPath)
34+
}
35+
StringCare.resetFolder()
36+
return resourceFiles
37+
}
38+
39+
fun obfuscateFile(mainModule: String, key: String, file: File, mockId: String = "") {
40+
val obfuscation = Stark.obfuscate(
41+
mainModule,
42+
key,
43+
file.readBytes(),
44+
mockId
45+
)
46+
file.writeBytes(obfuscation)
47+
}
48+
49+
fun revealFile(mainModule: String, key: String, file: File, mockId: String = "") {
50+
file.writeBytes(Stark.reveal(mainModule, key, file.readBytes(), mockId))
51+
}

src/main/kotlin/components/ExecutionListener.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ class ExecutionListener(
1212
private val debug: Boolean = false,
1313
val dataFound: (module: String, variant: String) -> Unit,
1414
val mergeResourcesStart: (module: String, variant: String) -> Unit,
15-
val mergeResourcesFinish: (module: String, variant: String) -> Unit
15+
val mergeResourcesFinish: (module: String, variant: String) -> Unit,
16+
val mergeAssetsStart: (module: String, variant: String) -> Unit,
17+
val mergeAssetsFinish: (module: String, variant: String) -> Unit
1618
) : BuildListener,
1719
TaskExecutionListener {
1820

@@ -27,6 +29,12 @@ class ExecutionListener(
2729
}
2830
mergeResourcesStart(it, PrintUtils.uncapitalize(task.onMergeResourcesStartsVariant()))
2931
}
32+
task.onMergeAssetsStarts() -> task.getModuleName()?.let {
33+
if (debug) {
34+
PrintUtils.print(it, "Module: $it", true)
35+
}
36+
mergeAssetsStart(it, PrintUtils.uncapitalize(task.onMergeAssetsStartsVariant()))
37+
}
3038
}
3139
}
3240

@@ -35,6 +43,9 @@ class ExecutionListener(
3543
task.onMergeResourcesFinish() -> task.getModuleName()?.let {
3644
mergeResourcesFinish(it, PrintUtils.uncapitalize(task.onMergeResourcesFinishVariant()))
3745
}
46+
task.onMergeAssetsFinish() -> task.getModuleName()?.let {
47+
mergeAssetsFinish(it, PrintUtils.uncapitalize(task.onMergeAssetsFinishVariant()))
48+
}
3849
}
3950
}
4051

0 commit comments

Comments
 (0)