aboutsummaryrefslogtreecommitdiff
path: root/kotlin-plugin
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-30 16:41:30 +0100
committerLinnea Gräf <nea@nea.moe>2024-10-30 16:41:30 +0100
commitf1f7c31fd3bf9987428f4b7233258a0da802ce43 (patch)
tree6491003753902c1c09bfd776c511108ff78331b2 /kotlin-plugin
parent51dddbbc06ae4abc074f3ff6b47de82c67fc29ea (diff)
downloadmcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.tar.gz
mcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.tar.bz2
mcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.zip
Make plugin configurable
Diffstat (limited to 'kotlin-plugin')
-rw-r--r--kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsCommandLineProcessor.kt27
-rw-r--r--kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsComponentRegistrar.kt10
-rw-r--r--kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsIrGenerationExtension.kt6
3 files changed, 33 insertions, 10 deletions
diff --git a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsCommandLineProcessor.kt b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsCommandLineProcessor.kt
index 31088cf..64286d0 100644
--- a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsCommandLineProcessor.kt
+++ b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsCommandLineProcessor.kt
@@ -5,9 +5,12 @@ package moe.nea.mcautotranslations.kotlin
import com.google.auto.service.AutoService
import moe.nea.mcautotranslation.`kotlin-plugin`.BuildConfig
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
+import org.jetbrains.kotlin.compiler.plugin.CliOption
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.config.CompilerConfigurationKey
+import org.jetbrains.kotlin.name.FqName
@AutoService(CommandLineProcessor::class)
@@ -15,9 +18,29 @@ class MCAutoTranslationsCommandLineProcessor : CommandLineProcessor {
override val pluginId: String
get() = BuildConfig.KOTLIN_PLUGIN_ID
override val pluginOptions: Collection<AbstractCliOption>
- get() = listOf()
+ get() = listOf(resolvedFunctionOption, translateFunctionOption)
+
+ companion object {
+ val resolvedFunctionOption =
+ CliOption(BuildConfig.PLUGIN_OPTION_RESOLVED_FUNCTION,
+ "fully qualified function name",
+ "Set the new replaced translate function.")
+ val translateFunctionOption =
+ CliOption(BuildConfig.PLUGIN_OPTION_TRANSLATE_FUNCTION,
+ "fully qualified function name",
+ "Set the original translate function that will be replaced with the a resolved function.")
+ val translateFunction = CompilerConfigurationKey<FqName>(BuildConfig.PLUGIN_OPTION_TRANSLATE_FUNCTION)
+ val resolvedFunction = CompilerConfigurationKey<FqName>(BuildConfig.PLUGIN_OPTION_RESOLVED_FUNCTION)
+ }
override fun processOption(option: AbstractCliOption, value: String, configuration: CompilerConfiguration) {
- // TODO: process options
+ when (option.optionName) {
+ resolvedFunctionOption.optionName ->
+ configuration.put(translateFunction, FqName(value))
+
+ translateFunctionOption.optionName ->
+ configuration.put(resolvedFunction, FqName(value))
+ else -> error("Unknown config option ${option.optionName}")
+ }
}
} \ No newline at end of file
diff --git a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsComponentRegistrar.kt b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsComponentRegistrar.kt
index e1e22dd..02e524a 100644
--- a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsComponentRegistrar.kt
+++ b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsComponentRegistrar.kt
@@ -4,13 +4,11 @@ package moe.nea.mcautotranslations.kotlin
import com.google.auto.service.AutoService
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.messageCollector
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
-import kotlin.collections.getOrPut
@AutoService(CompilerPluginRegistrar::class)
class MCAutoTranslationsComponentRegistrar : CompilerPluginRegistrar() {
@@ -20,9 +18,11 @@ class MCAutoTranslationsComponentRegistrar : CompilerPluginRegistrar() {
override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) {
val messageCollector = configuration.messageCollector
IrGenerationExtension.registerExtension(
- extension = MCAutoTranslationsIrGenerationExtension(messageCollector))
-
- messageCollector.report(CompilerMessageSeverity.INFO, "Registering stuff")
+ extension = MCAutoTranslationsIrGenerationExtension(
+ messageCollector,
+ configuration.get(MCAutoTranslationsCommandLineProcessor.translateFunction)!!,
+ configuration.get(MCAutoTranslationsCommandLineProcessor.resolvedFunction)!!,
+ ))
}
fun <T : Any> ExtensionStorage.registerExtensionFirst(
diff --git a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsIrGenerationExtension.kt b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsIrGenerationExtension.kt
index 3b17e68..3fd9224 100644
--- a/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsIrGenerationExtension.kt
+++ b/kotlin-plugin/src/main/kotlin/moe/nea/mcautotranslations/kotlin/MCAutoTranslationsIrGenerationExtension.kt
@@ -9,12 +9,12 @@ import org.jetbrains.kotlin.name.FqName
class MCAutoTranslationsIrGenerationExtension(
private val messageCollector: MessageCollector,
+ private val replace: FqName,
+ private val resolved: FqName,
) : IrGenerationExtension {
override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
val translationNames: MutableMap<FqName, CallableId> = mutableMapOf()
- val target = FqName("moe.nea.translatetest.tr")
- val resolved = FqName("moe.nea.translatetest.trResolved") // TODO: make these names configurable
- translationNames[target] = CallableId(resolved.parent(), resolved.shortName())
+ translationNames[replace] = CallableId(resolved.parent(), resolved.shortName())
moduleFragment.files.forEach {
val visitor = MCAutoTranslationsCallTransformerAndCollector(
it,