Skip to content

Commit 3a2da69

Browse files
committed
fix(#424): resolve plugin scan directory during a scoped scan
1 parent 9376241 commit 3a2da69

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

owlplug-client/src/main/java/com/owlplug/core/controllers/fragments/PluginPathFragmentController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.owlplug.core.components.ApplicationPreferences;
2222
import com.owlplug.core.ui.SVGPaths;
23+
import com.owlplug.core.utils.FileUtils;
2324
import com.owlplug.plugin.controllers.dialogs.ListDirectoryDialogController;
2425
import java.io.File;
2526
import java.io.IOException;
@@ -123,7 +124,7 @@ public void init() {
123124
});
124125

125126
directoryTextField.textProperty().addListener((observable, oldValue, newValue) -> {
126-
prefs.put(directoryOptionKey, newValue);
127+
prefs.put(directoryOptionKey, FileUtils.convertPath(newValue));
127128
refresh();
128129
});
129130

owlplug-client/src/main/java/com/owlplug/plugin/tasks/discovery/ScopedScanEntityCollector.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
import com.owlplug.plugin.model.PluginFormat;
2323
import com.owlplug.plugin.model.Symlink;
2424
import com.owlplug.plugin.tasks.discovery.fileformats.PluginFile;
25+
import java.io.File;
26+
import java.util.ArrayList;
27+
import java.util.HashSet;
2528
import java.util.LinkedHashSet;
2629
import java.util.Set;
2730

@@ -66,6 +69,15 @@ public ScopedScanEntityCollector collect() {
6669

6770
collectedSymlinks.addAll(symlinkCollector.collect(parameters.getDirectoryScope()));
6871

72+
// Try to restore original scan directory when a directory scope is used
73+
// https://github.com/DropSnorz/OwlPlug/issues/424
74+
String scanPath = getScanPathFromDirectoryScope(parameters.getDirectoryScope());
75+
if (scanPath != null) {
76+
File scanFile = new File(getScanPathFromDirectoryScope(scanPath));
77+
collectedPluginFiles.forEach(f -> f.setScanDirectory(scanFile));
78+
}
79+
80+
6981
} else {
7082
// Plugins are retrieved from regulars directories
7183
String vst2Directory = parameters.getVst2Directory();
@@ -123,4 +135,38 @@ public Set<Symlink> getSymlinks() {
123135
return symlinks;
124136
}
125137

138+
private Set<String> getAllPluginScanPath() {
139+
Set<String> paths = new HashSet<String>();
140+
141+
paths.add(parameters.getVst2Directory());
142+
paths.add(parameters.getVst3Directory());
143+
paths.add(parameters.getAuDirectory());
144+
paths.add(parameters.getLv2Directory());
145+
146+
paths.addAll(parameters.getVst2ExtraDirectories());
147+
paths.addAll(parameters.getVst3ExtraDirectories());
148+
paths.addAll(parameters.getAuExtraDirectories());
149+
paths.addAll(parameters.getLv2ExtraDirectories());
150+
151+
// Clean blank paths if some are provided
152+
paths.removeIf(String::isBlank);
153+
154+
return paths;
155+
156+
}
157+
158+
/**
159+
* Compute original scan directory based on the provided directory scope.
160+
* See related <a href="https://github.com/DropSnorz/OwlPlug/issues/424">issue</a>
161+
* @param directoryScope the directory scope
162+
* @return path to the potential scan directory
163+
*/
164+
private String getScanPathFromDirectoryScope(String directoryScope) {
165+
return getAllPluginScanPath()
166+
.stream()
167+
.sorted()
168+
.filter(s -> directoryScope.contains(s))
169+
.findFirst().orElse(null);
170+
}
171+
126172
}

0 commit comments

Comments
 (0)