From f1f7c31fd3bf9987428f4b7233258a0da802ce43 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Wed, 30 Oct 2024 16:41:30 +0100 Subject: Make plugin configurable --- .../gradle/MCAutoTranslationsExtension.kt | 7 ++++--- .../gradle/MCAutoTranslationsGradlePlugin.kt | 9 ++++++++- .../kotlin/moe/nea/mcautotranslations/gradle/utils.kt | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/utils.kt (limited to 'gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle') 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 7367056..726145e 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,7 +1,8 @@ package moe.nea.mcautotranslations.gradle -abstract class MCAutoTranslationsExtension { - - fun translationFunction(name: String) {} // TODO: actual config +import org.gradle.api.provider.Property +abstract class MCAutoTranslationsExtension { + abstract val translationFunction: Property + abstract val translationFunctionResolved: Property } 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 0e8004a..bc7ca3d 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 @@ -21,7 +21,14 @@ class MCAutoTranslationsGradlePlugin : KotlinCompilerPluginSupportPlugin { compileOnly(BuildConfig.ANNOTATIONS_GROUP + ":" + BuildConfig.ANNOTATIONS_ARTIFACT + ":" + BuildConfig.ANNOTATIONS_VERSION) } return project.provider { - listOf() // TODO: add plugin options from extension in here + listOf( + SubpluginOption(BuildConfig.PLUGIN_OPTION_RESOLVED_FUNCTION, + validateFunctionName("mcAutoTranslations.translationFunctionResolved", + extension.translationFunctionResolved) + ), + SubpluginOption(BuildConfig.PLUGIN_OPTION_TRANSLATE_FUNCTION, + validateFunctionName("mcAutoTranslations.translationFunction", + extension.translationFunction))) } } diff --git a/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/utils.kt b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/utils.kt new file mode 100644 index 0000000..c0218af --- /dev/null +++ b/gradle-plugin/src/main/kotlin/moe/nea/mcautotranslations/gradle/utils.kt @@ -0,0 +1,15 @@ +package moe.nea.mcautotranslations.gradle + +import org.gradle.api.provider.Property + +internal fun validateFunctionName(origin: String, property: Property): Lazy = lazy { + property.finalizeValueOnRead() + require(property.isPresent) { + "Function property $origin has not been set yet." + } + val name = property.get() + require(name.matches(Regex("^([a-z0-9_]+\\.)+[a-z0-9_A-Z]+$"))) { + "'$name' is not a valid function name. Make sure to set $origin to a valid value." + } + name +} -- cgit