aboutsummaryrefslogtreecommitdiff
path: root/gradle-plugin/src/main/kotlin/moe
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-30 17:43:39 +0100
committerLinnea Gräf <nea@nea.moe>2024-10-30 17:43:39 +0100
commitb5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3 (patch)
tree264e3468736ed2d4a902dc0dafd1f80ac3f5482b /gradle-plugin/src/main/kotlin/moe
parent455db4468167b65f796d346c472c9bb32d657ee5 (diff)
downloadmcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.tar.gz
mcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.tar.bz2
mcautotranslations-b5f098ae1a72f7ed540b1e02a4bc7488fb3d14d3.zip
Add task collection configuration
Diffstat (limited to 'gradle-plugin/src/main/kotlin/moe')
-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
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
+}