From a3d30612ec1d2a8a9858933dbd45348a9cb870c0 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Mon, 22 May 2023 14:51:52 +0200 Subject: [PATCH] Add linux paths for Dropbox and OneDrive --- src/main/java/module-info.java | 4 +-- .../DropboxLinuxLocationPresetsProvider.java | 35 +++++++++++++++++++ ...a => OneDriveLocationPresetsProvider.java} | 4 ++- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/cryptomator/common/locationpresets/DropboxLinuxLocationPresetsProvider.java rename src/main/java/org/cryptomator/common/locationpresets/{OneDriveMacLocationPresetsProvider.java => OneDriveLocationPresetsProvider.java} (78%) diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 99307ef5d..898ffc162 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -7,7 +7,7 @@ import org.cryptomator.common.locationpresets.ICloudMacLocationPresetsProvider; import org.cryptomator.common.locationpresets.ICloudWindowsLocationPresetsProvider; import org.cryptomator.common.locationpresets.LocationPresetsProvider; import org.cryptomator.common.locationpresets.MegaLocationPresetsProvider; -import org.cryptomator.common.locationpresets.OneDriveMacLocationPresetsProvider; +import org.cryptomator.common.locationpresets.OneDriveLocationPresetsProvider; import org.cryptomator.common.locationpresets.OneDriveWindowsLocationPresetsProvider; import org.cryptomator.common.locationpresets.PCloudLocationPresetsProvider; import org.cryptomator.integrations.tray.TrayMenuController; @@ -56,5 +56,5 @@ open module org.cryptomator.desktop { DropboxWindowsLocationPresetsProvider, ICloudMacLocationPresetsProvider, // ICloudWindowsLocationPresetsProvider, GoogleDriveWindowsLocationPresetsProvider, // GoogleDriveMacLocationPresetsProvider, PCloudLocationPresetsProvider, // - MegaLocationPresetsProvider, OneDriveMacLocationPresetsProvider, OneDriveWindowsLocationPresetsProvider; + MegaLocationPresetsProvider, OneDriveLocationPresetsProvider, OneDriveWindowsLocationPresetsProvider; } \ No newline at end of file diff --git a/src/main/java/org/cryptomator/common/locationpresets/DropboxLinuxLocationPresetsProvider.java b/src/main/java/org/cryptomator/common/locationpresets/DropboxLinuxLocationPresetsProvider.java new file mode 100644 index 000000000..49e30f177 --- /dev/null +++ b/src/main/java/org/cryptomator/common/locationpresets/DropboxLinuxLocationPresetsProvider.java @@ -0,0 +1,35 @@ +package org.cryptomator.common.locationpresets; + +import org.cryptomator.integrations.common.OperatingSystem; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.regex.Pattern; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX; + +@OperatingSystem(LINUX) +public final class DropboxLinuxLocationPresetsProvider implements LocationPresetsProvider { + + private static final Path USER_HOME = LocationPresetsProvider.resolveLocation("~/.").toAbsolutePath(); + private static final Pattern PATTERN = Pattern.compile("Dropbox \\(.+\\)"); + + @Override + public Stream getLocations() { + try (var dirStream = Files.newDirectoryStream(USER_HOME,"Dropbox*")){ + return StreamSupport.stream(dirStream.spliterator(), false).flatMap(p -> { + var matcher = PATTERN.matcher(p.getFileName().toString()); + if(matcher.matches() && Files.isDirectory(p)) { + return Stream.of(new LocationPreset(matcher.group(), p)); + } else { + return Stream.of(); + } + }); + } catch (IOException e) { + return Stream.of(); + } + } +} diff --git a/src/main/java/org/cryptomator/common/locationpresets/OneDriveMacLocationPresetsProvider.java b/src/main/java/org/cryptomator/common/locationpresets/OneDriveLocationPresetsProvider.java similarity index 78% rename from src/main/java/org/cryptomator/common/locationpresets/OneDriveMacLocationPresetsProvider.java rename to src/main/java/org/cryptomator/common/locationpresets/OneDriveLocationPresetsProvider.java index 62ecae18d..cb4a2e3d3 100644 --- a/src/main/java/org/cryptomator/common/locationpresets/OneDriveMacLocationPresetsProvider.java +++ b/src/main/java/org/cryptomator/common/locationpresets/OneDriveLocationPresetsProvider.java @@ -7,11 +7,13 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Stream; +import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX; import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC; @OperatingSystem(MAC) +@OperatingSystem(LINUX) @CheckAvailability -public final class OneDriveMacLocationPresetsProvider implements LocationPresetsProvider { +public final class OneDriveLocationPresetsProvider implements LocationPresetsProvider { private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/OneDrive");