Refactor GenerateLocalesConfigTask to run when string files updates

This commit is contained in:
AntsyLich
2026-09-20 04:58:39 +06:00
parent 427e105840
commit 2b9cb4ca5a
2 changed files with 15 additions and 9 deletions
@@ -1,26 +1,26 @@
package mihon.gradle.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.model.ObjectFactory
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
import javax.inject.Inject
abstract class GenerateLocalesConfigTask : DefaultTask() {
@get:Inject
abstract val objectFactory: ObjectFactory
@get:InputFiles
@get:PathSensitive(PathSensitivity.RELATIVE)
abstract val localeFiles: ConfigurableFileCollection
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun action() {
val locales = objectFactory.fileTree()
.from("src/commonMain/moko-resources")
.matching { include("**/strings.xml") }
.asSequence()
val locales = localeFiles.asSequence()
.filterNot { it.readText().contains(emptyResourcesElement) }
.map {
it.parentFile.name
+7 -1
View File
@@ -32,7 +32,13 @@ androidComponents {
val resSource = variant.sources.res ?: return@onVariants
val variantName = variant.name.replaceFirstChar { it.uppercase() }
val task = tasks.register<GenerateLocalesConfigTask>("generate${variantName}LocalesConfig")
val task = tasks.register<GenerateLocalesConfigTask>("generate${variantName}LocalesConfig") {
localeFiles.from(
layout.projectDirectory.dir("src/commonMain/moko-resources").asFileTree.matching {
include("**/strings.xml", "**/plurals.xml")
},
)
}
resSource.addGeneratedSourceDirectory(task) { it.outputDir }
}
}