From 16d05b61292872b0756a496ff111bbaebd80ccb0 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Fri, 24 May 2019 17:30:23 +0300 Subject: [PATCH] Get IDE plugin path from KotlinPluginUtil --- .../jetbrains/kotlin/idea/KotlinPluginUtil.kt | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinPluginUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinPluginUtil.kt index 3126c712410..ea73df5d737 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinPluginUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinPluginUtil.kt @@ -5,15 +5,28 @@ package org.jetbrains.kotlin.idea +import com.intellij.ide.plugins.IdeaPluginDescriptor import com.intellij.ide.plugins.PluginManager import com.intellij.ide.plugins.PluginManagerCore import com.intellij.openapi.extensions.PluginId +import java.io.File import java.util.* object KotlinPluginUtil { + private class KotlinPluginInfo(val id: PluginId, val version: String, val path: File) { + constructor(plugin: IdeaPluginDescriptor) : this(plugin.pluginId, plugin.version, plugin.path) + } - val KOTLIN_PLUGIN_ID: PluginId = PluginManagerCore.getPluginByClassName(KotlinPluginUtil::class.java.name) - ?: PluginId.getId("org.jetbrains.kotlin") + private val KOTLIN_PLUGIN_INFO: KotlinPluginInfo by lazy { + val plugin = PluginManagerCore.getPluginByClassName(KotlinPluginUtil::class.java.name)?.let { pluginId -> + PluginManager.getPlugin(pluginId) + } ?: error("Kotlin plugin not found: " + Arrays.toString(PluginManagerCore.getPlugins())) + + KotlinPluginInfo(plugin) + } + + val KOTLIN_PLUGIN_ID: PluginId + get() = KOTLIN_PLUGIN_INFO.id private const val PATCHED_PLUGIN_VERSION_KEY = "kotlin.plugin.version" private val PATCHED_PLUGIN_VERSION: String? = System.getProperty(PATCHED_PLUGIN_VERSION_KEY, null) @@ -32,9 +45,7 @@ object KotlinPluginUtil { @Deprecated("This method returns original plugin version. Please use getPluginVersion() instead.") @JvmStatic fun getPluginVersionFromIdea(): String { - val plugin = PluginManager.getPlugin(KOTLIN_PLUGIN_ID) - ?: error("Kotlin plugin not found: " + Arrays.toString(PluginManagerCore.getPlugins())) - return plugin.version + return KOTLIN_PLUGIN_INFO.version } @JvmStatic @@ -50,4 +61,8 @@ object KotlinPluginUtil { fun isDevVersion(): Boolean { return getPluginVersion().contains("-dev-") } + + fun getPluginPath(): File { + return KOTLIN_PLUGIN_INFO.path + } }