mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-15 17:56:17 +01:00
Enable plugin management via CLI (#2087)
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
This commit is contained in:
@@ -41,6 +41,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
@@ -87,15 +88,11 @@ public class DefaultPluginManager implements PluginManager {
|
||||
this.eventBus = eventBus;
|
||||
this.pluginSetConfigStore = pluginSetConfigStore;
|
||||
|
||||
if (contextFactory != null) {
|
||||
this.contextFactory = contextFactory;
|
||||
} else {
|
||||
this.contextFactory = (plugins -> {
|
||||
List<AvailablePlugin> pendingPlugins = new ArrayList<>(plugins);
|
||||
pendingInstallQueue.stream().map(PendingPluginInstallation::getPlugin).forEach(pendingPlugins::add);
|
||||
return PluginInstallationContext.from(getInstalled(), pendingPlugins);
|
||||
});
|
||||
}
|
||||
this.contextFactory = Objects.requireNonNullElseGet(contextFactory, () -> (plugins -> {
|
||||
List<AvailablePlugin> pendingPlugins = new ArrayList<>(plugins);
|
||||
pendingInstallQueue.stream().map(PendingPluginInstallation::getPlugin).forEach(pendingPlugins::add);
|
||||
return PluginInstallationContext.from(getInstalled(), pendingPlugins);
|
||||
}));
|
||||
|
||||
this.computeInstallationDependencies();
|
||||
}
|
||||
@@ -192,6 +189,7 @@ public class DefaultPluginManager implements PluginManager {
|
||||
|
||||
@Override
|
||||
public List<InstalledPlugin> getUpdatable() {
|
||||
PluginPermissions.read().check();
|
||||
return getInstalled()
|
||||
.stream()
|
||||
.filter(p -> isUpdatable(p.getDescriptor().getInformation().getName()))
|
||||
@@ -199,6 +197,12 @@ public class DefaultPluginManager implements PluginManager {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PendingPlugins getPending() {
|
||||
PluginPermissions.read().check();
|
||||
return new PendingPlugins(getAvailable(), getInstalled());
|
||||
}
|
||||
|
||||
private <T extends Plugin> Predicate<T> filterByName(String name) {
|
||||
return plugin -> name.equals(plugin.getDescriptor().getInformation().getName());
|
||||
}
|
||||
@@ -361,7 +365,7 @@ public class DefaultPluginManager implements PluginManager {
|
||||
}
|
||||
|
||||
private boolean isUpdatable(String name) {
|
||||
return getAvailable(name).isPresent() && !getPending(name).isPresent();
|
||||
return getAvailable(name).isPresent() && getPending(name).isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user