Skip to content

Commit 926b73b

Browse files
committed
Unified method for selection of IDE_BUNDLED libraries
Libraries installed in the sketchbook have priority over the bundled.
1 parent b03a9af commit 926b73b

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

Diff for: arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryReleases.java

+15-9
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@
2929

3030
package cc.arduino.contributions.libraries;
3131

32-
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
3332
import cc.arduino.contributions.VersionComparator;
33+
import processing.app.packages.UserLibraryFolder.Location;
3434

35-
import java.util.Collections;
3635
import java.util.LinkedList;
3736
import java.util.List;
3837
import java.util.Optional;
39-
import java.util.stream.Collectors;
4038

4139
public class ContributedLibraryReleases {
4240

@@ -49,6 +47,10 @@ public ContributedLibraryReleases(ContributedLibrary library) {
4947
add(library);
5048
}
5149

50+
public ContributedLibraryReleases(List<ContributedLibrary> libraries) {
51+
libraries.forEach(this::add);
52+
}
53+
5254
public List<ContributedLibrary> getReleases() {
5355
return releases;
5456
}
@@ -76,12 +78,16 @@ public void add(ContributedLibrary library) {
7678
}
7779

7880
public Optional<ContributedLibrary> getInstalled() {
79-
List<ContributedLibrary> installedReleases = releases.stream().filter(l -> l.isLibraryInstalled()).collect(Collectors.toList());
80-
if (installedReleases.isEmpty()) {
81-
return Optional.empty();
82-
}
83-
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
84-
return Optional.of(installedReleases.get(0));
81+
return releases.stream() //
82+
.filter(ContributedLibrary::isLibraryInstalled) //
83+
.reduce((x, y) -> {
84+
Location lx = x.getInstalledLibrary().get().getLocation();
85+
Location ly = y.getInstalledLibrary().get().getLocation();
86+
if (lx == ly) {
87+
return VersionComparator.max(x, y);
88+
}
89+
return lx == Location.SKETCHBOOK ? x : y;
90+
});
8591
}
8692

8793
public ContributedLibrary getLatest() {

Diff for: arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java

+10-14
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@
2929

3030
package cc.arduino.contributions.libraries;
3131

32-
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
33-
import cc.arduino.contributions.VersionComparator;
34-
import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate;
35-
36-
import java.util.*;
32+
import java.util.Collection;
33+
import java.util.Collections;
34+
import java.util.HashSet;
35+
import java.util.LinkedList;
36+
import java.util.List;
37+
import java.util.Optional;
3738
import java.util.stream.Collectors;
3839

40+
import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate;
41+
3942
public abstract class LibrariesIndex {
4043

4144
public abstract List<ContributedLibrary> getLibraries();
@@ -92,14 +95,7 @@ public List<String> getTypes() {
9295
}
9396

9497
public Optional<ContributedLibrary> getInstalled(String name) {
95-
return find(name).stream() //
96-
.filter(l -> l.isLibraryInstalled()) //
97-
.reduce((x, y) -> {
98-
if (x.isIDEBuiltIn() == y.isIDEBuiltIn()) {
99-
return VersionComparator.max(x, y);
100-
} else {
101-
return x.isIDEBuiltIn() ? y : x;
102-
}
103-
});
98+
ContributedLibraryReleases rel = new ContributedLibraryReleases(find(name));
99+
return rel.getInstalled();
104100
}
105101
}

0 commit comments

Comments
 (0)