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
|
||||
|
||||
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
|
||||
|
||||
@@ -32,7 +32,13 @@ androidComponents {
|
||||
val resSource = variant.sources.res ?: return@onVariants
|
||||
|
||||
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 }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user