From e891d48a7ad0c2e1ed522eae02c969a05d3ad15f Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 9 Dec 2014 17:47:58 +0300 Subject: [PATCH] Localize plugin string format usages --- .../jetbrains/jet/cli/jvm/PluginCliParser.kt | 22 ++----------------- .../compiler/plugin/CommandLineProcessor.kt | 19 ++++++++++++++++ .../src/KotlinAndroidJpsPlugin.kt | 10 ++++----- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/PluginCliParser.kt b/compiler/cli/src/org/jetbrains/jet/cli/jvm/PluginCliParser.kt index 086955a1857..9eb9898e165 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/PluginCliParser.kt +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/PluginCliParser.kt @@ -37,12 +37,12 @@ import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import java.util.ServiceLoader import java.io.IOException import java.util.Enumeration +import org.jetbrains.kotlin.compiler.plugin.parsePluginOption +import org.jetbrains.kotlin.compiler.plugin.PluginOptionValue public object PluginCliParser { - public val PLUGIN_ARGUMENT_PREFIX: String = "plugin:" - [platformStatic] fun loadPlugins(arguments: CommonCompilerArguments, configuration: CompilerConfiguration) { val classLoader = PluginURLClassLoader( @@ -100,24 +100,6 @@ public object PluginCliParser { } } } - - private class PluginOptionValue( - val pluginId: String, - val optionName: String, - val value: String - ) { - override fun toString() = "$pluginId:$optionName=$value" - } - - private fun parsePluginOption(argumentValue: String): PluginOptionValue? { - val pattern = Pattern.compile("""^plugin:([^:]*):([^=]*)=(.*)$""") - val matcher = pattern.matcher(argumentValue) - if (matcher.matches()) { - return PluginOptionValue(matcher.group(1)!!, matcher.group(2)!!, matcher.group(3)!!) - } - - return null - } } private class PluginURLClassLoader(urls: Array, parent: ClassLoader) : ClassLoader(Thread.currentThread().getContextClassLoader()) { diff --git a/compiler/plugin-api/src/org/jetbrains/kotlin/compiler/plugin/CommandLineProcessor.kt b/compiler/plugin-api/src/org/jetbrains/kotlin/compiler/plugin/CommandLineProcessor.kt index 61c5341e1fb..4c10037de09 100644 --- a/compiler/plugin-api/src/org/jetbrains/kotlin/compiler/plugin/CommandLineProcessor.kt +++ b/compiler/plugin-api/src/org/jetbrains/kotlin/compiler/plugin/CommandLineProcessor.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.compiler.plugin import org.jetbrains.jet.config.CompilerConfiguration +import java.util.regex.Pattern public class CliOption( public val name: String, @@ -36,6 +37,24 @@ public trait CommandLineProcessor { public fun processOption(option: CliOption, value: String, configuration: CompilerConfiguration) } +public data class PluginOptionValue( + val pluginId: String, + val optionName: String, + val value: String +) { + override fun toString() = "$pluginId:$optionName=$value" +} + +public fun parsePluginOption(argumentValue: String): PluginOptionValue? { + val pattern = Pattern.compile("""^plugin:([^:]*):([^=]*)=(.*)$""") + val matcher = pattern.matcher(argumentValue) + if (matcher.matches()) { + return PluginOptionValue(matcher.group(1), matcher.group(2), matcher.group(3)) + } + + return null +} + public fun getPluginOptionString(pluginId: String, key: String, value: String): String { return "plugin:$pluginId:$key=$value" } \ No newline at end of file diff --git a/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt b/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt index c10f887bcb7..b02c9135c7d 100644 --- a/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt +++ b/plugins/android-jps-plugin/src/KotlinAndroidJpsPlugin.kt @@ -25,15 +25,17 @@ import org.jetbrains.jps.android.AndroidJpsUtil import org.jetbrains.kotlin.compiler.plugin.CliOption import org.jetbrains.kotlin.android.AndroidCommandLineProcessor import org.jetbrains.jet.utils.PathUtil +import org.jetbrains.kotlin.compiler.plugin.getPluginOptionString public class KotlinAndroidJpsPlugin : KotlinJpsCompilerArgumentsProvider { private val jarFileName = "android-compiler-plugin.jar" override fun getExtraArguments(moduleBuildTarget: ModuleBuildTarget, context: CompileContext): List { val module = moduleBuildTarget.getModule() + val pluginId = AndroidCommandLineProcessor.ANDROID_COMPILER_PLUGIN_ID return listOf( - makePluginOption(AndroidCommandLineProcessor.RESOURCE_PATH_OPTION, getAndroidResPath(module)), - makePluginOption(AndroidCommandLineProcessor.MANIFEST_FILE_OPTION, getAndroidManifest(module)) + getPluginOptionString(pluginId, AndroidCommandLineProcessor.RESOURCE_PATH_OPTION.name, getAndroidResPath(module)), + getPluginOptionString(pluginId, AndroidCommandLineProcessor.MANIFEST_FILE_OPTION.name, getAndroidManifest(module)) ) } @@ -51,10 +53,6 @@ public class KotlinAndroidJpsPlugin : KotlinJpsCompilerArgumentsProvider { ) } - private fun makePluginOption(option: CliOption, value: String): String { - return "plugin:${AndroidCommandLineProcessor.ANDROID_COMPILER_PLUGIN_ID}:${option.name}=$value" - } - private fun getAndroidResPath(module: JpsModule): String { val extension = AndroidJpsUtil.getExtension(module) if (extension == null) return ""