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 package mihon.gradle.tasks
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty 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.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
import javax.inject.Inject
abstract class GenerateLocalesConfigTask : DefaultTask() { abstract class GenerateLocalesConfigTask : DefaultTask() {
@get:Inject @get:InputFiles
abstract val objectFactory: ObjectFactory @get:PathSensitive(PathSensitivity.RELATIVE)
abstract val localeFiles: ConfigurableFileCollection
@get:OutputDirectory @get:OutputDirectory
abstract val outputDir: DirectoryProperty abstract val outputDir: DirectoryProperty
@TaskAction @TaskAction
fun action() { fun action() {
val locales = objectFactory.fileTree() val locales = localeFiles.asSequence()
.from("src/commonMain/moko-resources")
.matching { include("**/strings.xml") }
.asSequence()
.filterNot { it.readText().contains(emptyResourcesElement) } .filterNot { it.readText().contains(emptyResourcesElement) }
.map { .map {
it.parentFile.name it.parentFile.name
+7 -1
View File
@@ -32,7 +32,13 @@ androidComponents {
val resSource = variant.sources.res ?: return@onVariants val resSource = variant.sources.res ?: return@onVariants
val variantName = variant.name.replaceFirstChar { it.uppercase() } 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 } resSource.addGeneratedSourceDirectory(task) { it.outputDir }
} }
} }