28
28
*/
29
29
package cc .arduino .contributions .libraries ;
30
30
31
+ import cc .arduino .contributions .libraries .filters .LibraryInstalledInsideCore ;
32
+ import cc .arduino .contributions .libraries .filters .TypePredicate ;
33
+ import cc .arduino .contributions .packages .ContributedPlatform ;
34
+ import cc .arduino .contributions .packages .ContributionsIndexer ;
31
35
import com .fasterxml .jackson .databind .DeserializationFeature ;
32
36
import com .fasterxml .jackson .databind .ObjectMapper ;
33
37
import com .fasterxml .jackson .module .mrbean .MrBeanModule ;
38
+ import com .google .common .base .Function ;
39
+ import com .google .common .collect .FluentIterable ;
34
40
import processing .app .BaseNoGui ;
35
41
import processing .app .I18n ;
36
42
import processing .app .helpers .FileUtils ;
50
56
51
57
public class LibrariesIndexer {
52
58
59
+ private final ContributionsIndexer contributionsIndexer ;
53
60
private LibrariesIndex index ;
54
61
private final LibraryList installedLibraries = new LibraryList ();
55
62
private final LibraryList installedLibrariesWithDuplicates = new LibraryList ();
@@ -58,10 +65,10 @@ public class LibrariesIndexer {
58
65
private final File stagingFolder ;
59
66
private File sketchbookLibrariesFolder ;
60
67
61
- public LibrariesIndexer (File preferencesFolder ) {
62
- indexFile = new File ( preferencesFolder , "library_index.json" ) ;
63
- stagingFolder = new File (preferencesFolder , "staging" + File . separator +
64
- "libraries" );
68
+ public LibrariesIndexer (File preferencesFolder , ContributionsIndexer contributionsIndexer ) {
69
+ this . contributionsIndexer = contributionsIndexer ;
70
+ this . indexFile = new File (preferencesFolder , "library_index.json" );
71
+ this . stagingFolder = new File ( new File ( preferencesFolder , "staging" ), "libraries" );
65
72
}
66
73
67
74
public void parseIndex () throws IOException {
@@ -101,12 +108,23 @@ public void rescanLibraries() {
101
108
// Clear all installed flags
102
109
installedLibraries .clear ();
103
110
installedLibrariesWithDuplicates .clear ();
104
- for (ContributedLibrary lib : index .getLibraries ())
111
+ for (ContributedLibrary lib : index .getLibraries ()) {
105
112
lib .setInstalled (false );
113
+ }
106
114
107
115
// Rescan libraries
108
- for (File folder : librariesFolders )
116
+ for (File folder : librariesFolders ) {
109
117
scanInstalledLibraries (folder , folder .equals (sketchbookLibrariesFolder ));
118
+ }
119
+
120
+ FluentIterable .from (installedLibraries ).filter (new TypePredicate ("Contributed" )).filter (new LibraryInstalledInsideCore (contributionsIndexer )).transform (new Function <UserLibrary , Object >() {
121
+ @ Override
122
+ public Object apply (UserLibrary userLibrary ) {
123
+ ContributedPlatform platform = contributionsIndexer .getPlatformByFolder (userLibrary .getInstalledFolder ());
124
+ userLibrary .setTypes (Arrays .asList (platform .getCategory ()));
125
+ return userLibrary ;
126
+ }
127
+ }).toList ();
110
128
}
111
129
112
130
private void scanInstalledLibraries (File folder , boolean isSketchbook ) {
0 commit comments