diff options
author | Linnea Gräf <nea@nea.moe> | 2024-10-30 17:43:39 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-10-30 17:43:39 +0100 |
commit | b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3 (patch) | |
tree | 264e3468736ed2d4a902dc0dafd1f80ac3f5482b /gradle-plugin/src/main/kotlin/moe | |
parent | 455db4468167b65f796d346c472c9bb32d657ee5 (diff) | |
download | mcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.tar.gz mcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.tar.bz2 mcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.zip |
Add task collection configuration
Diffstat (limited to 'gradle-plugin/src/main/kotlin/moe')
3 files changed, 35 insertions, 6 deletions
diff --git a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsExtension.kt b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsExtension.kt index 726145e..c40c89b 100644 --- a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsExtension.kt +++ b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsExtension.kt @@ -1,8 +1,26 @@ package moe.nea.mcautotranslations.gradle +import org.gradle.api.Project +import org.gradle.api.file.SourceDirectorySet import org.gradle.api.provider.Property +import org.gradle.api.tasks.SourceSet +import org.gradle.configurationcache.extensions.capitalized -abstract class MCAutoTranslationsExtension { +abstract class MCAutoTranslationsExtension(private val project: Project) { abstract val translationFunction: Property<String> abstract val translationFunctionResolved: Property<String> + + fun collectTranslationsTaskFor( + sourceSet: SourceSet, + configure: CollectTranslations.() -> Unit = {} + ): CollectTranslations { + val capName = if (sourceSet.name == "main") "" else sourceSet.name.capitalized() + val taskName = "collect${capName}Translations" + val task = project.tasks.findByName(taskName)?.let { it as CollectTranslations } + ?: project.tasks.create(taskName, CollectTranslations::class.java) { + it.classes.from((sourceSet.extensions.findByName("kotlin") as SourceDirectorySet).classesDirectory) + } + configure(task) + return task + } } diff --git a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt index bc7ca3d..60079f0 100644 --- a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt +++ b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.SubpluginOption class MCAutoTranslationsGradlePlugin : KotlinCompilerPluginSupportPlugin { override fun apply(target: Project) { println("Applying plugin to project") - target.extensions.create("mcAutoTranslations", MCAutoTranslationsExtension::class.java) + target.extensions.create("mcAutoTranslations", MCAutoTranslationsExtension::class.java, target) } override fun applyToCompilation(kotlinCompilation: KotlinCompilation<*>): Provider<List<SubpluginOption>> { @@ -45,4 +45,4 @@ class MCAutoTranslationsGradlePlugin : KotlinCompilerPluginSupportPlugin { override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean { return true } -}
\ No newline at end of file +} diff --git a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MergeTranslations.kt b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MergeTranslations.kt index 6b521ec..c69ee85 100644 --- a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MergeTranslations.kt +++ b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MergeTranslations.kt @@ -5,7 +5,9 @@ import com.google.gson.reflect.TypeToken import moe.nea.mcautotranslations.gradle.visitors.AnnotationCollector import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.RegularFile import org.gradle.api.file.RegularFileProperty +import org.gradle.api.provider.Provider import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.Internal import org.gradle.api.tasks.OutputFile @@ -36,7 +38,16 @@ abstract class CollectTranslations : DefaultTask() { init { cacheFile.convention(project.layout.buildDirectory.file("mergeTranslations/incremental/${this.name}.json")) - outputFile.convention(project.layout.buildDirectory.file("mergeTranslations/build/${this.name}/en_us.json")) + // TODO: should this second convention be changed? + outputFile.convention(makeFileName("en_us.json")) + } + + private fun makeFileName(name: String): Provider<RegularFile> { + return project.layout.buildDirectory.file("mergeTranslations/build/${this.name}/$name") + } + + fun outputFileName(name: String) { + outputFile.set(makeFileName(name)) } class Translations { @@ -91,7 +102,7 @@ abstract class CollectTranslations : DefaultTask() { private fun toKVMap(translations: Translations): TreeMap<String, String> { return (translations.baseTranslation.values.asSequence() - + translations.inlineTranslations.values.asSequence()) + + translations.inlineTranslations.values.asSequence()) .fold(TreeMap()) { acc, x -> acc.putAll(x) // TODO: warn on duplicate properties (possibly with error enum configuration) acc @@ -124,4 +135,4 @@ abstract class CollectTranslations : DefaultTask() { if (extension != "class") return false return true } -}
\ No newline at end of file +} |