1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-20 14:54:31 +01:00

Unified method for selection of IDE_BUNDLED libraries

Libraries installed in the sketchbook have priority over the
bundled.
This commit is contained in:
Cristian Maglie 2018-01-02 16:34:05 +01:00
parent b03a9af19a
commit 926b73b538
2 changed files with 25 additions and 23 deletions

View File

@ -29,14 +29,12 @@
package cc.arduino.contributions.libraries;
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
import cc.arduino.contributions.VersionComparator;
import processing.app.packages.UserLibraryFolder.Location;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class ContributedLibraryReleases {
@ -49,6 +47,10 @@ public class ContributedLibraryReleases {
add(library);
}
public ContributedLibraryReleases(List<ContributedLibrary> libraries) {
libraries.forEach(this::add);
}
public List<ContributedLibrary> getReleases() {
return releases;
}
@ -76,12 +78,16 @@ public class ContributedLibraryReleases {
}
public Optional<ContributedLibrary> getInstalled() {
List<ContributedLibrary> installedReleases = releases.stream().filter(l -> l.isLibraryInstalled()).collect(Collectors.toList());
if (installedReleases.isEmpty()) {
return Optional.empty();
}
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
return Optional.of(installedReleases.get(0));
return releases.stream() //
.filter(ContributedLibrary::isLibraryInstalled) //
.reduce((x, y) -> {
Location lx = x.getInstalledLibrary().get().getLocation();
Location ly = y.getInstalledLibrary().get().getLocation();
if (lx == ly) {
return VersionComparator.max(x, y);
}
return lx == Location.SKETCHBOOK ? x : y;
});
}
public ContributedLibrary getLatest() {

View File

@ -29,13 +29,16 @@
package cc.arduino.contributions.libraries;
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
import cc.arduino.contributions.VersionComparator;
import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate;
import java.util.*;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate;
public abstract class LibrariesIndex {
public abstract List<ContributedLibrary> getLibraries();
@ -92,14 +95,7 @@ public abstract class LibrariesIndex {
}
public Optional<ContributedLibrary> getInstalled(String name) {
return find(name).stream() //
.filter(l -> l.isLibraryInstalled()) //
.reduce((x, y) -> {
if (x.isIDEBuiltIn() == y.isIDEBuiltIn()) {
return VersionComparator.max(x, y);
} else {
return x.isIDEBuiltIn() ? y : x;
}
});
ContributedLibraryReleases rel = new ContributedLibraryReleases(find(name));
return rel.getInstalled();
}
}