Skip to content

Commit 505ad45

Browse files
Federico Fissoresandeepmistry
Federico Fissore
authored andcommitted
Fallback to stock library_index.json file if the copy in .arduino15 is missing/corrupted or if it the downloaded one if corrupted. Fixes arduino#3778
1 parent c6217ab commit 505ad45

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java

+5
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public void rescanLibraries() {
109109
// Clear all installed flags
110110
installedLibraries.clear();
111111
installedLibrariesWithDuplicates.clear();
112+
113+
if (index.getLibraries() == null) {
114+
return;
115+
}
116+
112117
for (ContributedLibrary lib : index.getLibraries()) {
113118
lib.setInstalled(false);
114119
}

arduino-core/src/processing/app/BaseNoGui.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,7 @@ static public void initPackages() throws Exception {
592592

593593
try {
594594
indexer.parseIndex();
595-
} catch (JsonProcessingException e) {
596-
FileUtils.deleteIfExists(indexFile);
597-
FileUtils.deleteIfExists(indexSignatureFile);
598-
throw e;
599-
} catch (SignatureVerificationFailedException e) {
595+
} catch (JsonProcessingException | SignatureVerificationFailedException e) {
600596
FileUtils.deleteIfExists(indexFile);
601597
FileUtils.deleteIfExists(indexSignatureFile);
602598
throw e;
@@ -611,6 +607,17 @@ static public void initPackages() throws Exception {
611607

612608
librariesIndexer = new LibrariesIndexer(BaseNoGui.getSettingsFolder(), indexer);
613609
File librariesIndexFile = librariesIndexer.getIndexFile();
610+
copyStockLibraryIndexIfUpstreamIsMissing(librariesIndexFile);
611+
try {
612+
librariesIndexer.parseIndex();
613+
} catch (JsonProcessingException e) {
614+
FileUtils.deleteIfExists(librariesIndexFile);
615+
copyStockLibraryIndexIfUpstreamIsMissing(librariesIndexFile);
616+
librariesIndexer.parseIndex();
617+
}
618+
}
619+
620+
private static void copyStockLibraryIndexIfUpstreamIsMissing(File librariesIndexFile) throws IOException {
614621
if (!librariesIndexFile.isFile()) {
615622
File defaultLibraryJsonFile = new File(getContentFile("dist"), "library_index.json");
616623
if (defaultLibraryJsonFile.isFile()) {
@@ -628,12 +635,6 @@ static public void initPackages() throws Exception {
628635
}
629636
}
630637
}
631-
try {
632-
librariesIndexer.parseIndex();
633-
} catch (JsonProcessingException e) {
634-
FileUtils.deleteIfExists(librariesIndexFile);
635-
throw e;
636-
}
637638
}
638639

639640
static protected void initPlatform() {

0 commit comments

Comments
 (0)