2828 */
2929package cc .arduino .contributions .libraries ;
3030
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 ;
3135import com .fasterxml .jackson .databind .DeserializationFeature ;
3236import com .fasterxml .jackson .databind .ObjectMapper ;
3337import com .fasterxml .jackson .module .mrbean .MrBeanModule ;
38+ import com .google .common .base .Function ;
39+ import com .google .common .collect .FluentIterable ;
3440import processing .app .BaseNoGui ;
3541import processing .app .I18n ;
3642import processing .app .helpers .FileUtils ;
5056
5157public class LibrariesIndexer {
5258
59+ private final ContributionsIndexer contributionsIndexer ;
5360 private LibrariesIndex index ;
5461 private final LibraryList installedLibraries = new LibraryList ();
5562 private final LibraryList installedLibrariesWithDuplicates = new LibraryList ();
@@ -58,10 +65,10 @@ public class LibrariesIndexer {
5865 private final File stagingFolder ;
5966 private File sketchbookLibrariesFolder ;
6067
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" );
6572 }
6673
6774 public void parseIndex () throws IOException {
@@ -101,12 +108,23 @@ public void rescanLibraries() {
101108 // Clear all installed flags
102109 installedLibraries .clear ();
103110 installedLibrariesWithDuplicates .clear ();
104- for (ContributedLibrary lib : index .getLibraries ())
111+ for (ContributedLibrary lib : index .getLibraries ()) {
105112 lib .setInstalled (false );
113+ }
106114
107115 // Rescan libraries
108- for (File folder : librariesFolders )
116+ for (File folder : librariesFolders ) {
109117 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 ();
110128 }
111129
112130 private void scanInstalledLibraries (File folder , boolean isSketchbook ) {
0 commit comments