mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WIP plugins: check plugins filter before installing a plugin
GitOrigin-RevId: 4a470b6fd9c27c3291888e47b638a8f0276c8fb8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
09b93ecbc9
commit
e5d61af45c
@@ -7,6 +7,7 @@ import com.intellij.ide.IdeBundle;
|
||||
import com.intellij.ide.plugins.marketplace.MarketplaceRequests;
|
||||
import com.intellij.ide.plugins.marketplace.statistics.PluginManagerUsageCollector;
|
||||
import com.intellij.ide.plugins.marketplace.statistics.enums.InstallationSourceEnum;
|
||||
import com.intellij.ide.plugins.org.PluginManagerConfigurableForOrg;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationGroup;
|
||||
import com.intellij.notification.NotificationType;
|
||||
@@ -235,6 +236,10 @@ public final class PluginInstallOperation {
|
||||
private boolean prepareToInstall(@NotNull PluginNode pluginNode,
|
||||
@NotNull List<PluginId> pluginIds) throws IOException {
|
||||
if (!checkMissingDependencies(pluginNode, pluginIds)) return false;
|
||||
if (!PluginManagerConfigurableForOrg.getInstance().allowInstallingPlugin(pluginNode)) {
|
||||
LOG.warn("The plugin " + pluginNode.getPluginId() + " is not allowed to install for the organization");
|
||||
return false;
|
||||
}
|
||||
IdeaPluginDescriptor toDisable = checkDependenciesAndReplacements(pluginNode);
|
||||
|
||||
myShownErrors = false;
|
||||
|
||||
+4
@@ -16,6 +16,10 @@ class PluginManagerConfigurableForOrg {
|
||||
fun getInstance(): PluginManagerConfigurableForOrg = service()
|
||||
}
|
||||
|
||||
fun allowInstallingPlugin(descriptor: IdeaPluginDescriptor) : Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun isPluginAllowed(isLocalPlugin: Boolean,
|
||||
descriptor: IdeaPluginDescriptor) : Boolean {
|
||||
|
||||
|
||||
+3
-1
@@ -7,6 +7,7 @@ import com.intellij.ide.plugins.PluginManagerCore;
|
||||
import com.intellij.ide.plugins.PluginNode;
|
||||
import com.intellij.ide.plugins.RepositoryHelper;
|
||||
import com.intellij.ide.plugins.marketplace.MarketplaceRequests;
|
||||
import com.intellij.ide.plugins.org.PluginManagerConfigurableForOrg;
|
||||
import com.intellij.openapi.extensions.PluginId;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.Task;
|
||||
@@ -47,8 +48,9 @@ final class InstallAndEnableTask extends Task.Modal {
|
||||
List<IdeaPluginDescriptor> descriptors =
|
||||
new ArrayList<>(RepositoryHelper.mergePluginsFromRepositories(marketplacePlugins, myCustomPlugins, true));
|
||||
|
||||
var org = PluginManagerConfigurableForOrg.getInstance();
|
||||
for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) {
|
||||
if (!descriptor.isEnabled() && PluginManagerCore.isCompatible(descriptor)) {
|
||||
if (!descriptor.isEnabled() && PluginManagerCore.isCompatible(descriptor) && org.allowInstallingPlugin(descriptor)) {
|
||||
descriptors.add(descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -6,6 +6,7 @@ import com.intellij.ide.plugins.*
|
||||
import com.intellij.ide.plugins.advertiser.PluginData
|
||||
import com.intellij.ide.plugins.advertiser.PluginFeatureCacheService
|
||||
import com.intellij.ide.plugins.marketplace.MarketplaceRequests
|
||||
import com.intellij.ide.plugins.org.PluginManagerConfigurableForOrg
|
||||
import com.intellij.ide.ui.PluginBooleanOptionDescriptor
|
||||
import com.intellij.notification.NotificationAction
|
||||
import com.intellij.notification.NotificationType
|
||||
@@ -66,6 +67,8 @@ open class PluginAdvertiserService {
|
||||
}
|
||||
}
|
||||
|
||||
val org = PluginManagerConfigurableForOrg.getInstance()
|
||||
|
||||
//include disabled plugins
|
||||
ids.filter { (pluginId, _) ->
|
||||
PluginManagerCore.isDisabled(pluginId)
|
||||
@@ -73,6 +76,8 @@ open class PluginAdvertiserService {
|
||||
PluginManagerCore.getPlugin(pluginId)?.let {
|
||||
plugin to it
|
||||
}
|
||||
}.filter {
|
||||
org.allowInstallingPlugin(it.second)
|
||||
}.forEach { (plugin, pluginDescriptor) ->
|
||||
disabledPlugins[plugin] = pluginDescriptor
|
||||
}
|
||||
@@ -95,6 +100,8 @@ open class PluginAdvertiserService {
|
||||
|| !ids.containsKey(pluginId)
|
||||
|| PluginManagerCore.isDisabled(pluginId)
|
||||
|| PluginManagerCore.isBrokenPlugin(loadedPlugin)
|
||||
}.filter {
|
||||
org.allowInstallingPlugin(it)
|
||||
}.map { PluginDownloader.createDownloader(it) }
|
||||
|
||||
invokeLater(ModalityState.NON_MODAL) {
|
||||
|
||||
+16
@@ -3,11 +3,13 @@ package com.intellij.openapi.updateSettings.impl.pluginsAdvertisement;
|
||||
|
||||
import com.intellij.ide.IdeBundle;
|
||||
import com.intellij.ide.plugins.*;
|
||||
import com.intellij.ide.plugins.org.PluginManagerConfigurableForOrg;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.updateSettings.impl.DetectedPluginsPanel;
|
||||
import com.intellij.openapi.updateSettings.impl.PluginDownloader;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -16,6 +18,7 @@ import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author anna
|
||||
@@ -91,6 +94,19 @@ public final class PluginsAdvertiserDialog extends DialogWrapper {
|
||||
return false;
|
||||
}
|
||||
|
||||
var org = PluginManagerConfigurableForOrg.getInstance();
|
||||
var notAllowedToInstallPlugins = nodes
|
||||
.stream()
|
||||
.filter(descriptor -> !org.allowInstallingPlugin(descriptor))
|
||||
.map(e -> e.getPluginId().getIdString())
|
||||
.collect(Collectors.toCollection(TreeSet<String>::new));
|
||||
|
||||
if (!notAllowedToInstallPlugins.isEmpty()) {
|
||||
LOG.warn("Some advertised plugins were not allowed to install for " +
|
||||
"the organization: " + StringUtil.join(notAllowedToInstallPlugins, ", "));
|
||||
return false;
|
||||
}
|
||||
|
||||
PluginManagerMain.suggestToEnableInstalledDependantPlugins(PluginEnabler.HEADLESS, nodes);
|
||||
|
||||
Runnable notifyRunnable = () -> {
|
||||
|
||||
Reference in New Issue
Block a user