11import components.*
2- import org.gradle.api.DefaultTask
32import org.gradle.api.NamedDomainObjectContainer
43import org.gradle.api.Plugin
54import org.gradle.api.Project
65import org.gradle.api.internal.plugins.DslObject
7- import org.gradle.api.tasks.Input
8- import org.gradle.api.tasks.TaskAction
9- import java.io.File
106
117open class StringCare : Plugin <Project > {
128
@@ -49,21 +45,21 @@ open class StringCare : Plugin<Project> {
4945 extension.modules.forEach { module ->
5046 when {
5147 module.stringFiles.isNotEmpty() && module.srcFolders.isNotEmpty() -> {
52- moduleMap[module.name!! ] = Configuration (module.name).apply {
48+ moduleMap[module.name] = Configuration (module.name).apply {
5349 stringFiles.addAll(module.stringFiles)
5450 srcFolders.addAll(module.srcFolders)
5551 debug = extension.debug
5652 }
5753 }
5854 module.srcFolders.isNotEmpty() -> {
59- moduleMap[module.name!! ] = Configuration (module.name).apply {
55+ moduleMap[module.name] = Configuration (module.name).apply {
6056 stringFiles.addAll(defaultConfig().stringFiles)
6157 srcFolders.addAll(module.srcFolders)
6258 debug = extension.debug
6359 }
6460 }
6561 module.stringFiles.isNotEmpty() -> {
66- moduleMap[module.name!! ] = Configuration (module.name).apply {
62+ moduleMap[module.name] = Configuration (module.name).apply {
6763 stringFiles.addAll(module.stringFiles)
6864 srcFolders.addAll(defaultConfig().srcFolders)
6965 debug = extension.debug
@@ -88,15 +84,26 @@ open class StringCare : Plugin<Project> {
8884 }
8985 when {
9086 moduleMap.containsKey(module) -> {
87+ val variantOrFlavor = extension.variants.find {
88+ variant.toLowerCase().contains(it.name.toLowerCase())
89+ }
90+ if (variantOrFlavor != null && variantOrFlavor.skip) {
91+ PrintUtils .print (module, " Skipping $variant " )
92+ return @fingerPrint
93+ }
94+
9195 PrintUtils .print (module, " $variant :$key " )
9296 PrintUtils .print (module, backupStringRes)
9397 moduleMap[module]?.let { configuration ->
9498 backupFiles(absoluteProjectPath, configuration)
9599 }
100+
96101 moduleMap[module]?.let { configuration ->
97102 val files = locateFiles(absoluteProjectPath, configuration)
98103 files.forEach { file ->
99- modifyXML(file.file, extension.main_module, key, extension.debug)
104+ modifyXML(file.file, extension.main_module, key, extension.debug,
105+ variantOrFlavor?.applicationId ? : " "
106+ )
100107 }
101108 }
102109 PrintUtils .print (module, obfuscateStringRes)
@@ -118,7 +125,13 @@ open class StringCare : Plugin<Project> {
118125 }
119126
120127 },
121- mergeResourcesFinish = { module, _ ->
128+ mergeResourcesFinish = { module, variant ->
129+ val variantOrFlavor = extension.variants.find {
130+ variant.toLowerCase().contains(it.name.toLowerCase())
131+ }
132+ if (variantOrFlavor != null && variantOrFlavor.skip) {
133+ return @ExecutionListener
134+ }
122135 restoreFiles(absoluteProjectPath, module)
123136 }
124137 ))
@@ -133,14 +146,25 @@ open class StringCare : Plugin<Project> {
133146 internal set(value) {
134147 DslObject (this ).extensions.add(" modules" , value)
135148 }
149+ var variants: NamedDomainObjectContainer <VariantApplicationId >
150+ @Suppress(" UNCHECKED_CAST" )
151+ get() = DslObject (this ).extensions.getByName(" variants" ) as NamedDomainObjectContainer <VariantApplicationId >
152+ internal set(value) {
153+ DslObject (this ).extensions.add(" variants" , value)
154+ }
136155 }
137156
138- open class Configuration (var name : String? ) {
157+ open class Configuration (var name : String ) {
139158 var stringFiles = mutableListOf<String >()
140159 var srcFolders = mutableListOf<String >()
141160 var debug = false
142161 }
143162
163+ open class VariantApplicationId (var name : String ) {
164+ var applicationId = " "
165+ var skip = false
166+ }
167+
144168}
145169
146170
0 commit comments