mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Generate locales_config.xml in build dir
This commit is contained in:
parent
0f96f4dbe1
commit
6d15f383d1
4 changed files with 40 additions and 26 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
2
i18n/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
# Generated
|
|
||||||
locales_config.xml
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue