aboutsummaryrefslogtreecommitdiff
path: root/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/MCAutoTranslationsGradlePlugin.kt
blob: 60079f0302ac7a65c376fc95343622b8438f55cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package moe.nea.mcautotranslations.gradle

import moe.nea.mcautotranslation.`gradle-plugin`.BuildConfig
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin
import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
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)
	}

	override fun applyToCompilation(kotlinCompilation: KotlinCompilation<*>): Provider<List<SubpluginOption>> {
		val project = kotlinCompilation.target.project
		val extension = project.extensions.getByType(MCAutoTranslationsExtension::class.java)
		kotlinCompilation.dependencies {
			compileOnly(BuildConfig.ANNOTATIONS_GROUP + ":" + BuildConfig.ANNOTATIONS_ARTIFACT + ":" + BuildConfig.ANNOTATIONS_VERSION)
		}
		return project.provider {
			listOf(
				SubpluginOption(BuildConfig.PLUGIN_OPTION_RESOLVED_FUNCTION,
				                validateFunctionName("mcAutoTranslations.translationFunctionResolved",
				                                     extension.translationFunctionResolved)
				),
				SubpluginOption(BuildConfig.PLUGIN_OPTION_TRANSLATE_FUNCTION,
				                validateFunctionName("mcAutoTranslations.translationFunction",
				                                     extension.translationFunction)))
		}
	}

	override fun getCompilerPluginId(): String {
		return BuildConfig.KOTLIN_PLUGIN_ID
	}

	override fun getPluginArtifact(): SubpluginArtifact = SubpluginArtifact(
		groupId = BuildConfig.KOTLIN_PLUGIN_GROUP,
		artifactId = BuildConfig.KOTLIN_PLUGIN_ARTIFACT,
		version = BuildConfig.KOTLIN_PLUGIN_VERSION,
	)

	override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean {
		return true
	}
}