import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.tasks.TaskProvider import org.gradle.kotlin.dsl.TaskContainerScope private val emptyResourcesElement = "\\s*|".toRegex() fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider { return with(project) { register("generateLocalesConfig") { val languages = fileTree("$projectDir/src/commonMain/resources/MR/") .matching { include("**/strings.xml") } .filterNot { it.readText().contains(emptyResourcesElement) } .map { it.parentFile.name .replace("base", "en") .replace("-r", "-") .replace("+", "-") .takeIf(String::isNotBlank) ?: "en" } .sorted() .joinToString(separator = "\n") { " " } val content = """ $languages """.trimIndent() val localeFile = file("$projectDir/src/androidMain/res/xml/locales_config.xml") localeFile.parentFile.mkdirs() localeFile.writeText(content) } } }