mirror of
https://github.com/mihonapp/mihon.git
synced 2026-10-16 13:48:09 -07:00
Refactor GenerateLocalesConfigTask to run when string files updates
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user