Skip to content

Commit bc4498a

Browse files
authored
Merge pull request #11487 from cmaglie/do-not-delete-unused-packages-index
Do not delete unused 3rd party index files
2 parents 488f0d7 + c82005c commit bc4498a

File tree

7 files changed

+37
-143
lines changed

7 files changed

+37
-143
lines changed

app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,7 @@ public void onUpdatePressed() {
140140
installerThread = new Thread(() -> {
141141
try {
142142
setProgressVisible(true, "");
143-
List<String> downloadedPackageIndexFiles = installer
144-
.updateIndex(this::setProgress);
145-
installer.deleteUnknownFiles(downloadedPackageIndexFiles);
143+
installer.updateIndex(this::setProgress);
146144
onIndexesUpdated();
147145
if (contribTable.getCellEditor() != null) {
148146
contribTable.getCellEditor().stopCellEditing();

app/src/processing/app/Base.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,7 @@ public Base(String[] args) throws Exception {
315315
BaseNoGui.getPlatform(), gpgDetachedSignatureVerifier);
316316
ProgressListener progressListener = new ConsoleProgressListener();
317317

318-
List<String> downloadedPackageIndexFiles = contributionInstaller.updateIndex(progressListener);
319-
contributionInstaller.deleteUnknownFiles(downloadedPackageIndexFiles);
318+
contributionInstaller.updateIndex(progressListener);
320319
indexer.parseIndex();
321320
indexer.syncWithFilesystem();
322321

arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java

+1-22
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.apache.commons.exec.DefaultExecutor;
4242
import org.apache.commons.exec.Executor;
4343
import org.apache.commons.exec.PumpStreamHandler;
44-
import org.apache.commons.io.FilenameUtils;
4544
import org.apache.logging.log4j.LogManager;
4645
import org.apache.logging.log4j.Logger;
4746
import processing.app.BaseNoGui;
@@ -284,7 +283,7 @@ public synchronized List<String> remove(ContributedPlatform contributedPlatform)
284283
return errors;
285284
}
286285

287-
public synchronized List<String> updateIndex(ProgressListener progressListener) {
286+
public synchronized void updateIndex(ProgressListener progressListener) {
288287
MultiStepProgress progress = new MultiStepProgress(1);
289288

290289
final DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.indexer.getStagingFolder());
@@ -293,14 +292,11 @@ public synchronized List<String> updateIndex(ProgressListener progressListener)
293292
PreferencesData.getCollection(Constants.PREF_BOARDS_MANAGER_ADDITIONAL_URLS)
294293
);
295294
packageIndexURLs.add(Constants.PACKAGE_INDEX_URL);
296-
List<String> downloadedPackageIndexFilesAccumulator = new LinkedList<>();
297295

298296
for (String packageIndexURLString : packageIndexURLs) {
299297
try {
300298
// Extract the file name from the URL
301299
final URL packageIndexURL = new URL(packageIndexURLString);
302-
String indexFileName = FilenameUtils.getName(packageIndexURL.getPath());
303-
downloadedPackageIndexFilesAccumulator.add(BaseNoGui.indexer.getIndexFile(indexFileName).getName());
304300

305301
log.info("Start download and signature check of={}", packageIndexURLs);
306302
downloader.downloadIndexAndSignature(progress, packageIndexURL, progressListener, signatureVerifier);
@@ -312,22 +308,5 @@ public synchronized List<String> updateIndex(ProgressListener progressListener)
312308

313309
progress.stepDone();
314310
log.info("Downloaded package index URL={}", packageIndexURLs);
315-
return downloadedPackageIndexFilesAccumulator;
316-
}
317-
318-
public synchronized void deleteUnknownFiles(List<String> downloadedPackageIndexFiles) throws IOException {
319-
File preferencesFolder = BaseNoGui.indexer.getIndexFile(".").getParentFile();
320-
File[] additionalPackageIndexFiles = preferencesFolder.listFiles(new PackageIndexFilenameFilter(Constants.DEFAULT_INDEX_FILE_NAME));
321-
if (additionalPackageIndexFiles == null) {
322-
return;
323-
}
324-
log.info("Check unknown files. Additional package index folder files={}, Additional package index url downloaded={}", downloadedPackageIndexFiles, additionalPackageIndexFiles);
325-
326-
for (File additionalPackageIndexFile : additionalPackageIndexFiles) {
327-
if (!downloadedPackageIndexFiles.contains(additionalPackageIndexFile.getName())) {
328-
log.info("Delete this unknown file={} because not included in this list={}", additionalPackageIndexFile, additionalPackageIndexFiles);
329-
Files.delete(additionalPackageIndexFile.toPath());
330-
}
331-
}
332311
}
333312
}

arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
public class ContributionsIndex {
4242

43-
private ArrayList<ContributedPackage> packages = new ArrayList<ContributedPackage>();
43+
private ArrayList<ContributedPackage> packages = new ArrayList<>();
4444
public List<ContributedPackage> getPackages() { return packages; }
4545

4646
public ContributedPackage findPackage(String packageName) {

arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java

+33-12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.fasterxml.jackson.databind.DeserializationFeature;
3737
import com.fasterxml.jackson.databind.ObjectMapper;
3838
import org.apache.commons.compress.utils.IOUtils;
39+
import org.apache.commons.io.FilenameUtils;
3940

4041
import processing.app.BaseNoGui;
4142
import processing.app.Platform;
@@ -50,6 +51,8 @@
5051
import java.io.FileInputStream;
5152
import java.io.IOException;
5253
import java.io.InputStream;
54+
import java.net.MalformedURLException;
55+
import java.net.URL;
5356
import java.util.*;
5457
import java.util.stream.Collectors;
5558

@@ -107,19 +110,14 @@ public void parseIndex() throws Exception {
107110
index.getPackages().forEach(pack -> pack.setTrusted(true));
108111

109112
// Overlay 3rd party indexes
110-
File[] indexFiles = preferencesFolder.listFiles(new TestPackageIndexFilenameFilter(new PackageIndexFilenameFilter(Constants.DEFAULT_INDEX_FILE_NAME)));
111-
112-
if (indexFiles != null) {
113-
for (File indexFile : indexFiles) {
114-
try {
115-
mergeContributions(indexFile);
116-
} catch (JsonProcessingException e) {
117-
System.err.println(format(tr("Skipping contributed index file {0}, parsing error occured:"), indexFile));
118-
System.err.println(e);
119-
}
113+
List<File> indexFiles = get3rdPartyIndexFiles();
114+
for (File indexFile : indexFiles) {
115+
try {
116+
mergeContributions(indexFile);
117+
} catch (JsonProcessingException e) {
118+
System.err.println(format(tr("Skipping contributed index file {0}, parsing error occured:"), indexFile));
119+
System.err.println(e);
120120
}
121-
} else {
122-
System.err.println(format(tr("Error reading package indexes folder: {0}\n(maybe a permission problem?)"), preferencesFolder));
123121
}
124122

125123
// Fill tools and toolsDependency cross references
@@ -146,6 +144,29 @@ public void parseIndex() throws Exception {
146144
index.fillCategories();
147145
}
148146

147+
private List<File> get3rdPartyIndexFiles() throws MalformedURLException {
148+
List<File> indexFiles = new ArrayList<>();
149+
for (String urlString : PreferencesData.getCollection(Constants.PREF_BOARDS_MANAGER_ADDITIONAL_URLS)) {
150+
final URL url = new URL(urlString);
151+
String filename = FilenameUtils.getName(url.getPath());
152+
indexFiles.add(getIndexFile(filename));
153+
}
154+
155+
File[] testIndexFiles = preferencesFolder.listFiles((dir, name) -> {
156+
if (!new File(dir, name).isFile())
157+
return false;
158+
if (!name.startsWith("test_package_") || !name.endsWith("_index.json"))
159+
return false;
160+
return true;
161+
});
162+
if (testIndexFiles == null) {
163+
System.err.println(
164+
format(tr("Error reading package indexes folder: {0}\n(maybe a permission problem?)"), preferencesFolder));
165+
}
166+
indexFiles.addAll(Arrays.asList(testIndexFiles));
167+
return indexFiles;
168+
}
169+
149170
private void mergeContributions(File indexFile) throws IOException {
150171
if (!indexFile.exists())
151172
return;

arduino-core/src/cc/arduino/contributions/packages/PackageIndexFilenameFilter.java

-47
This file was deleted.

arduino-core/src/cc/arduino/contributions/packages/TestPackageIndexFilenameFilter.java

-56
This file was deleted.

0 commit comments

Comments
 (0)