refactor: Generate locales_config.xml in build dir

This commit is contained in:
AntsyLich 2024-09-28 20:41:16 +07:00 committed by Ahmad Ansori Palembani
parent 0f96f4dbe1
commit 6d15f383d1
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
4 changed files with 40 additions and 26 deletions

View file

@ -1,13 +1,12 @@
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.TaskContainerScope import java.io.File
private val emptyResourcesElement = "<resources>\\s*</resources>|<resources/>".toRegex() private val emptyResourcesElement = "<resources>\\s*</resources>|<resources/>".toRegex()
fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider<Task> { fun Project.registerLocalesConfigTask(outputResourceDir: File): TaskProvider<Task> {
return with(project) { return tasks.register("generateLocalesConfig") {
register("generateLocalesConfig") {
val languages = fileTree("$projectDir/src/commonMain/moko-resources/") val languages = fileTree("$projectDir/src/commonMain/moko-resources/")
.matching { include("**/strings.xml") } .matching { include("**/strings.xml") }
.filterNot { it.readText().contains(emptyResourcesElement) } .filterNot { it.readText().contains(emptyResourcesElement) }
@ -30,9 +29,9 @@ $languages
</locale-config> </locale-config>
""".trimIndent() """.trimIndent()
val localeFile = file("$projectDir/src/androidMain/res/xml/locales_config.xml") outputResourceDir.resolve("xml/locales_config.xml").apply {
localeFile.parentFile.mkdirs() parentFile.mkdirs()
localeFile.writeText(content) writeText(content)
} }
} }
} }

View file

@ -0,0 +1,6 @@
package yokai.build
import org.gradle.api.Project
import java.io.File
val Project.generatedBuildDir: File get() = project.layout.buildDirectory.asFile.get().resolve("generated/yokai")

2
i18n/.gitignore vendored
View file

@ -1,2 +0,0 @@
# Generated
locales_config.xml

View file

@ -1,3 +1,4 @@
import yokai.build.generatedBuildDir
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
@ -28,8 +29,18 @@ kotlin {
} }
} }
val generatedAndroidResourceDir = generatedBuildDir.resolve("android/res")
android { android {
namespace = "yokai.i18n" namespace = "yokai.i18n"
sourceSets {
val main by getting
main.res.srcDirs(
"src/commonMain/moko-resources",
generatedAndroidResourceDir,
)
}
} }
multiplatformResources { multiplatformResources {
@ -37,7 +48,7 @@ multiplatformResources {
} }
tasks { tasks {
val localesConfigTask = registerLocalesConfigTask(project) val localesConfigTask = project.registerLocalesConfigTask(generatedAndroidResourceDir)
preBuild { preBuild {
dependsOn(localesConfigTask) dependsOn(localesConfigTask)
} }