aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--example/build.gradle.kts14
-rw-r--r--example/src/main/kotlin/test.kt2
-rw-r--r--gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsExtension.kt20
-rw-r--r--gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt4
-rw-r--r--gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MergeTranslations.kt17
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
+}