diff options
5 files changed, 43 insertions, 14 deletions
diff --git a/example/build.gradle.kts b/example/build.gradle.kts index 99b62f9..7732e0a 100644 --- a/example/build.gradle.kts +++ b/example/build.gradle.kts @@ -1,5 +1,3 @@ -import moe.nea.mcautotranslations.gradle.CollectTranslations - plugins { kotlin("jvm") version "2.0.20" id("moe.nea.mc-auto-translations") @@ -18,10 +16,12 @@ mcAutoTranslations { translationFunctionResolved.set("moe.nea.mcautotranslations.example.trResolved") } -val collectTranslations by tasks.registering(CollectTranslations::class) { +mcAutoTranslations.collectTranslationsTaskFor(sourceSets.main.get()) { this.baseTranslations.from(file("en_us.json")) - this.classes.from(sourceSets.main.map { it.kotlin.classesDirectory }) - this.outputFile.set(layout.buildDirectory.file("en_us.json")) + outputFileName("en_us.json") +} +tasks.processResources { + from(mcAutoTranslations.collectTranslationsTaskFor(sourceSets.main.get())) { + into("assets/minecraft/lang") + } } - -tasks.processResources { from(collectTranslations) } diff --git a/example/src/main/kotlin/test.kt b/example/src/main/kotlin/test.kt index 7702dad..7c0c88c 100644 --- a/example/src/main/kotlin/test.kt +++ b/example/src/main/kotlin/test.kt @@ -4,7 +4,7 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken val resources = - Text::class.java.classLoader.getResourceAsStream("en_us.json")!!.reader().use { + Text::class.java.classLoader.getResourceAsStream("assets/minecraft/lang/en_us.json")!!.reader().use { Gson().fromJson(it, object : TypeToken<HashMap<String, String>>() {}) } 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 +} |