mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-15 17:56:17 +01:00
adds verification of dependency versions on plugin installation
This commit is contained in:
@@ -42,6 +42,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -68,6 +69,8 @@ public class DefaultPluginManager implements PluginManager {
|
||||
private final Collection<PendingPluginUninstallation> pendingUninstallQueue = new ArrayList<>();
|
||||
private final PluginDependencyTracker dependencyTracker = new PluginDependencyTracker();
|
||||
|
||||
private Function<List<AvailablePlugin>, PluginInstallationContext> contextFactory;
|
||||
|
||||
@Inject
|
||||
public DefaultPluginManager(PluginLoader loader, PluginCenter center, PluginInstaller installer, Restarter restarter, ScmEventBus eventBus) {
|
||||
this.loader = loader;
|
||||
@@ -77,6 +80,12 @@ public class DefaultPluginManager implements PluginManager {
|
||||
this.eventBus = eventBus;
|
||||
|
||||
this.computeInstallationDependencies();
|
||||
this.contextFactory = (availablePlugins -> PluginInstallationContext.of(getInstalled(), availablePlugins));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setContextFactory(Function<List<AvailablePlugin>, PluginInstallationContext> contextFactory) {
|
||||
this.contextFactory = contextFactory;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -167,9 +176,10 @@ public class DefaultPluginManager implements PluginManager {
|
||||
|
||||
List<AvailablePlugin> plugins = collectPluginsToInstall(name);
|
||||
List<PendingPluginInstallation> pendingInstallations = new ArrayList<>();
|
||||
|
||||
for (AvailablePlugin plugin : plugins) {
|
||||
try {
|
||||
PendingPluginInstallation pending = installer.install(plugin);
|
||||
PendingPluginInstallation pending = installer.install(contextFactory.apply(plugins), plugin);
|
||||
dependencyTracker.addInstalled(plugin.getDescriptor());
|
||||
pendingInstallations.add(pending);
|
||||
eventBus.post(new PluginEvent(PluginEvent.PluginEventType.INSTALLED, plugin));
|
||||
|
||||
Reference in New Issue
Block a user