mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 01:15:44 +01:00
Make updatable plugins installable
This commit is contained in:
@@ -178,22 +178,18 @@ public class DefaultPluginManager implements PluginManager {
|
|||||||
|
|
||||||
private List<AvailablePlugin> collectPluginsToInstall(String name) {
|
private List<AvailablePlugin> collectPluginsToInstall(String name) {
|
||||||
List<AvailablePlugin> plugins = new ArrayList<>();
|
List<AvailablePlugin> plugins = new ArrayList<>();
|
||||||
collectPluginsToInstall(plugins, name);
|
collectPluginsToInstall(plugins, name, true);
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInstalledOrPending(String name) {
|
private void collectPluginsToInstall(List<AvailablePlugin> plugins, String name, boolean isUpdate) {
|
||||||
return getInstalled(name).isPresent() || getPending(name).isPresent();
|
if (!isInstalledOrPending(name) || isUpdate && isUpdatable(name)) {
|
||||||
}
|
|
||||||
|
|
||||||
private void collectPluginsToInstall(List<AvailablePlugin> plugins, String name) {
|
|
||||||
if (!isInstalledOrPending(name)) {
|
|
||||||
AvailablePlugin plugin = getAvailable(name).orElseThrow(() -> NotFoundException.notFound(entity(AvailablePlugin.class, name)));
|
AvailablePlugin plugin = getAvailable(name).orElseThrow(() -> NotFoundException.notFound(entity(AvailablePlugin.class, name)));
|
||||||
|
|
||||||
Set<String> dependencies = plugin.getDescriptor().getDependencies();
|
Set<String> dependencies = plugin.getDescriptor().getDependencies();
|
||||||
if (dependencies != null) {
|
if (dependencies != null) {
|
||||||
for (String dependency: dependencies){
|
for (String dependency: dependencies){
|
||||||
collectPluginsToInstall(plugins, dependency);
|
collectPluginsToInstall(plugins, dependency, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,4 +198,12 @@ public class DefaultPluginManager implements PluginManager {
|
|||||||
LOG.info("plugin {} is already installed or installation is pending, skipping installation", name);
|
LOG.info("plugin {} is already installed or installation is pending, skipping installation", name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isInstalledOrPending(String name) {
|
||||||
|
return getInstalled(name).isPresent() || getPending(name).isPresent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isUpdatable(String name) {
|
||||||
|
return getAvailable(name).isPresent() && !getPending(name).isPresent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user