mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[settingsSync] slightly better logging if cannot download plugins for JBA and ask for restart after installing marketplace plugin
GitOrigin-RevId: b798b38bbb94a6c59c9b1d558cd2d555372fd21e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4092b80835
commit
496260b885
+39
-26
@@ -3,6 +3,8 @@ package com.intellij.settingsSync.core.communicator
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.ide.plugins.DynamicPlugins.loadPlugin
|
||||
import com.intellij.ide.plugins.PluginInstaller
|
||||
import com.intellij.ide.plugins.PluginManager
|
||||
import com.intellij.ide.plugins.PluginManagerCore
|
||||
import com.intellij.ide.plugins.PluginXmlPathResolver
|
||||
import com.intellij.ide.plugins.loadDescriptor
|
||||
import com.intellij.ide.plugins.loadAndInitDescriptorFromArtifact
|
||||
@@ -16,8 +18,11 @@ import com.intellij.openapi.updateSettings.impl.PluginDownloader
|
||||
import com.intellij.platform.ide.progress.ModalTaskOwner
|
||||
import com.intellij.platform.ide.progress.TaskCancellation
|
||||
import com.intellij.platform.ide.progress.withModalProgress
|
||||
import com.intellij.settingsSync.core.RestartForPluginInstall
|
||||
import com.intellij.settingsSync.core.RestartReason
|
||||
import com.intellij.settingsSync.core.SettingsSyncBundle
|
||||
import com.intellij.settingsSync.core.SettingsSyncEventListener
|
||||
import com.intellij.settingsSync.core.SettingsSyncEvents
|
||||
import com.intellij.settingsSync.core.SettingsSyncLocalSettings
|
||||
import com.intellij.settingsSync.core.SettingsSyncRemoteCommunicator
|
||||
import com.intellij.settingsSync.core.auth.SettingsSyncAuthService
|
||||
@@ -142,38 +147,46 @@ object RemoteCommunicatorHolder : SettingsSyncEventListener {
|
||||
}
|
||||
}
|
||||
var installSuccessful: Boolean = withContext(Dispatchers.EDT) {
|
||||
if (downloaders.size != 2) {
|
||||
logger.error("Unexpected number of downloaders: ${downloaders.size}")
|
||||
return@withContext false
|
||||
}
|
||||
val marketplacePluginFile = downloaders[marketplacePluginId]?.filePath ?: let {
|
||||
logger.error("Cannot download marketplace plugin")
|
||||
return@withContext false
|
||||
}
|
||||
val targetFile = PluginInstaller.unpackPlugin(marketplacePluginFile, Path.of(PathManager.getPluginsPath()))
|
||||
if (!PluginManagerCore.isPluginInstalled(marketplacePluginId)) {
|
||||
val marketplacePluginDownloader = downloaders[marketplacePluginId] ?: let{
|
||||
logger.error("Cannot download plugin '${marketplacePluginId.idString}' from marketplace!")
|
||||
return@withContext false
|
||||
}
|
||||
val marketplacePluginFile = marketplacePluginDownloader.filePath
|
||||
val targetFile = PluginInstaller.unpackPlugin(marketplacePluginFile, Path.of(PathManager.getPluginsPath()))
|
||||
|
||||
val targetDescriptor = loadDescriptor(targetFile, false, PluginXmlPathResolver.DEFAULT_PATH_RESOLVER) ?: let {
|
||||
logger.error("No descriptor found in marketplace plugin")
|
||||
return@withContext false
|
||||
val targetDescriptor = loadDescriptor(targetFile, false, PluginXmlPathResolver.DEFAULT_PATH_RESOLVER) ?: let {
|
||||
logger.error("No descriptor found in marketplace plugin")
|
||||
return@withContext false
|
||||
}
|
||||
|
||||
targetDescriptor.jarFiles = getJars(targetFile.parent)
|
||||
if (!loadPlugin(targetDescriptor)) {
|
||||
logger.error("Cannot load marketplace plugin")
|
||||
return@withContext false
|
||||
}
|
||||
SettingsSyncEvents.getInstance().fireRestartRequired(RestartForPluginInstall(setOf(marketplacePluginDownloader.pluginName)))
|
||||
}
|
||||
|
||||
targetDescriptor.jarFiles = getJars(targetFile.parent)
|
||||
if (!loadPlugin(targetDescriptor)) {
|
||||
logger.error("Cannot load marketplace plugin")
|
||||
return@withContext false
|
||||
if (!PluginManagerCore.isPluginInstalled(settingsSyncPluginId)) {
|
||||
val syncPluginDownloader = downloaders[settingsSyncPluginId] ?: let{
|
||||
logger.error("Cannot download plugin '${settingsSyncPluginId.idString}' from marketplace!")
|
||||
return@withContext false
|
||||
}
|
||||
|
||||
val syncPluginFile = syncPluginDownloader.filePath
|
||||
val syncPluginDescriptor = loadAndInitDescriptorFromArtifact(syncPluginFile, null) ?: let {
|
||||
logger.error("Cannot load plugin descriptor for ${settingsSyncPluginId.idString}")
|
||||
return@withContext false
|
||||
}
|
||||
if (!PluginInstaller.installAndLoadDynamicPlugin(syncPluginFile, null, syncPluginDescriptor)) {
|
||||
logger.error("Cannot load plugin ${settingsSyncPluginId.idString}")
|
||||
return@withContext false
|
||||
}
|
||||
}
|
||||
val syncPluginFile = downloaders[settingsSyncPluginId]?.filePath ?: let {
|
||||
logger.error("cannot download backup & sync plugin")
|
||||
return@withContext false
|
||||
}
|
||||
val syncPluginDescriptor = loadAndInitDescriptorFromArtifact(syncPluginFile, null) ?: let {
|
||||
logger.error("Cannot load b&s plugin descriptor")
|
||||
return@withContext false
|
||||
}
|
||||
return@withContext PluginInstaller.installAndLoadDynamicPlugin(syncPluginFile, null, syncPluginDescriptor)
|
||||
return@withContext true
|
||||
}
|
||||
if (!installSuccessful) {
|
||||
|
||||
if (parentComponent != null) {
|
||||
Messages.showInfoMessage(parentComponent, SettingsSyncBundle.message("settings.jba.plugin.required.text"),
|
||||
SettingsSyncBundle.message("settings.jba.plugin.required.title"))
|
||||
|
||||
Reference in New Issue
Block a user