From 2b9cb4ca5a5b70b6279a9a970cc96757e77e0b0b Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sun, 20 Sep 2026 04:46:28 +0600 Subject: [PATCH] Refactor GenerateLocalesConfigTask to run when string files updates --- .../gradle/tasks/GenerateLocalesConfigTask.kt | 16 ++++++++-------- i18n/build.gradle.kts | 8 +++++++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/gradle/build-logic/src/main/kotlin/mihon/gradle/tasks/GenerateLocalesConfigTask.kt b/gradle/build-logic/src/main/kotlin/mihon/gradle/tasks/GenerateLocalesConfigTask.kt index 736cb7f91..2797904fb 100644 --- a/gradle/build-logic/src/main/kotlin/mihon/gradle/tasks/GenerateLocalesConfigTask.kt +++ b/gradle/build-logic/src/main/kotlin/mihon/gradle/tasks/GenerateLocalesConfigTask.kt @@ -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 diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts index 808068734..3d2d007f8 100644 --- a/i18n/build.gradle.kts +++ b/i18n/build.gradle.kts @@ -32,7 +32,13 @@ androidComponents { val resSource = variant.sources.res ?: return@onVariants val variantName = variant.name.replaceFirstChar { it.uppercase() } - val task = tasks.register("generate${variantName}LocalesConfig") + val task = tasks.register("generate${variantName}LocalesConfig") { + localeFiles.from( + layout.projectDirectory.dir("src/commonMain/moko-resources").asFileTree.matching { + include("**/strings.xml", "**/plurals.xml") + }, + ) + } resSource.addGeneratedSourceDirectory(task) { it.outputDir } } }