diff options
author | Linnea Gräf <nea@nea.moe> | 2024-10-30 16:41:30 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-10-30 16:41:30 +0100 |
commit | f1f7c31fd3bf9987428f4b7233258a0da802ce43 (patch) | |
tree | 6491003753902c1c09bfd776c511108ff78331b2 /kotlin-plugin | |
parent | 51dddbbc06ae4abc074f3ff6b47de82c67fc29ea (diff) | |
download | mcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.tar.gz mcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.tar.bz2 mcautotranslations-f1f7c31fd3bf9987428f4b7233258a0da802ce43.zip |
Make plugin configurable
Diffstat (limited to 'kotlin-plugin')
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, |