1
1
import components.*
2
- import org.gradle.api.DefaultTask
3
2
import org.gradle.api.NamedDomainObjectContainer
4
3
import org.gradle.api.Plugin
5
4
import org.gradle.api.Project
6
5
import 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
10
6
11
7
open class StringCare : Plugin <Project > {
12
8
@@ -49,21 +45,21 @@ open class StringCare : Plugin<Project> {
49
45
extension.modules.forEach { module ->
50
46
when {
51
47
module.stringFiles.isNotEmpty() && module.srcFolders.isNotEmpty() -> {
52
- moduleMap[module.name!! ] = Configuration (module.name).apply {
48
+ moduleMap[module.name] = Configuration (module.name).apply {
53
49
stringFiles.addAll(module.stringFiles)
54
50
srcFolders.addAll(module.srcFolders)
55
51
debug = extension.debug
56
52
}
57
53
}
58
54
module.srcFolders.isNotEmpty() -> {
59
- moduleMap[module.name!! ] = Configuration (module.name).apply {
55
+ moduleMap[module.name] = Configuration (module.name).apply {
60
56
stringFiles.addAll(defaultConfig().stringFiles)
61
57
srcFolders.addAll(module.srcFolders)
62
58
debug = extension.debug
63
59
}
64
60
}
65
61
module.stringFiles.isNotEmpty() -> {
66
- moduleMap[module.name!! ] = Configuration (module.name).apply {
62
+ moduleMap[module.name] = Configuration (module.name).apply {
67
63
stringFiles.addAll(module.stringFiles)
68
64
srcFolders.addAll(defaultConfig().srcFolders)
69
65
debug = extension.debug
@@ -88,15 +84,26 @@ open class StringCare : Plugin<Project> {
88
84
}
89
85
when {
90
86
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
+
91
95
PrintUtils .print (module, " $variant :$key " )
92
96
PrintUtils .print (module, backupStringRes)
93
97
moduleMap[module]?.let { configuration ->
94
98
backupFiles(absoluteProjectPath, configuration)
95
99
}
100
+
96
101
moduleMap[module]?.let { configuration ->
97
102
val files = locateFiles(absoluteProjectPath, configuration)
98
103
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
+ )
100
107
}
101
108
}
102
109
PrintUtils .print (module, obfuscateStringRes)
@@ -118,7 +125,13 @@ open class StringCare : Plugin<Project> {
118
125
}
119
126
120
127
},
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
+ }
122
135
restoreFiles(absoluteProjectPath, module)
123
136
}
124
137
))
@@ -133,14 +146,25 @@ open class StringCare : Plugin<Project> {
133
146
internal set(value) {
134
147
DslObject (this ).extensions.add(" modules" , value)
135
148
}
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
+ }
136
155
}
137
156
138
- open class Configuration (var name : String? ) {
157
+ open class Configuration (var name : String ) {
139
158
var stringFiles = mutableListOf<String >()
140
159
var srcFolders = mutableListOf<String >()
141
160
var debug = false
142
161
}
143
162
163
+ open class VariantApplicationId (var name : String ) {
164
+ var applicationId = " "
165
+ var skip = false
166
+ }
167
+
144
168
}
145
169
146
170
0 commit comments