diff options
| author | 2025-08-26 16:09:16 -0500 | |
|---|---|---|
| committer | 2025-08-26 16:09:16 -0500 | |
| commit | e54c17972fc44dc780d9273af91401f329d2b69c (patch) | |
| tree | f7848182bdc4dd9dd631ad56f2de1cc8c0c85b92 /core/src/main/java/dev/figboot | |
| parent | initial commit (diff) | |
wip: config
Diffstat (limited to 'core/src/main/java/dev/figboot')
6 files changed, 114 insertions, 5 deletions
diff --git a/core/src/main/java/dev/figboot/launcher/core/config/DefaultLauncherDirectories.java b/core/src/main/java/dev/figboot/launcher/core/config/DefaultLauncherDirectories.java new file mode 100644 index 0000000..228bc1a --- /dev/null +++ b/core/src/main/java/dev/figboot/launcher/core/config/DefaultLauncherDirectories.java @@ -0,0 +1,25 @@ +package dev.figboot.launcher.core.config; + +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; + +import java.nio.file.Path; + +@RequiredArgsConstructor(access = AccessLevel.PACKAGE) +class DefaultLauncherDirectories implements LauncherDirectories { + private final LauncherDirectories parent; + + @Override + public Path getDirectory(LauncherDirectory directory) { + switch (directory) { + case HOME: + return parent.getDirectory(LauncherDirectory.HOME); + case INSTANCES: + return parent.getDirectory(LauncherDirectory.HOME).resolve("instances"); + case LIBRARIES: + return parent.getDirectory(LauncherDirectory.HOME).resolve("libraries"); + } + + return null; + } +} diff --git a/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectories.java b/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectories.java new file mode 100644 index 0000000..d1ccd08 --- /dev/null +++ b/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectories.java @@ -0,0 +1,15 @@ +package dev.figboot.launcher.core.config; + +import java.nio.file.Path; + +interface LauncherDirectories { + Path getDirectory(LauncherDirectory directory); + + default LauncherDirectories mapNull(LauncherDirectories ifNull) { + return (dir) -> { + Path p = getDirectory(dir); + if (p != null) return p; + return ifNull.getDirectory(dir); + }; + } +} diff --git a/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectory.java b/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectory.java new file mode 100644 index 0000000..fa2cbd6 --- /dev/null +++ b/core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectory.java @@ -0,0 +1,7 @@ +package dev.figboot.launcher.core.config; + +public enum LauncherDirectory { + HOME, + INSTANCES, + LIBRARIES +} diff --git a/core/src/main/java/dev/figboot/launcher/core/config/OSLauncherDirectories.java b/core/src/main/java/dev/figboot/launcher/core/config/OSLauncherDirectories.java new file mode 100644 index 0000000..988f2e6 --- /dev/null +++ b/core/src/main/java/dev/figboot/launcher/core/config/OSLauncherDirectories.java @@ -0,0 +1,23 @@ +package dev.figboot.launcher.core.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Path; +import java.util.EnumMap; +import java.util.function.Function; + +class OSLauncherDirectories { + private static final Logger LOGGER = LoggerFactory.getLogger(OSLauncherDirectories.class); + + class Windows implements LauncherDirectories { + @Override + public Path getDirectory(LauncherDirectory directory) { + switch (directory) { + case HOME: { + + } + } + } + } +} diff --git a/core/src/main/java/dev/figboot/launcher/core/config/PropertyLauncherDirectories.java b/core/src/main/java/dev/figboot/launcher/core/config/PropertyLauncherDirectories.java new file mode 100644 index 0000000..4d10919 --- /dev/null +++ b/core/src/main/java/dev/figboot/launcher/core/config/PropertyLauncherDirectories.java @@ -0,0 +1,19 @@ +package dev.figboot.launcher.core.config; + +import java.nio.file.FileSystems; +import java.nio.file.Path; + +enum PropertyLauncherDirectories implements LauncherDirectories { + INSTANCE; + + @Override + public Path getDirectory(LauncherDirectory dir) { + String prop = System.getProperty("dev.figboot.launcher.core.dir." + dir.name()); + + if (prop != null) { + return FileSystems.getDefault().getPath(prop); + } + + return null; + } +} diff --git a/core/src/main/java/dev/figboot/launcher/core/config/SimpleLauncherConfiguration.java b/core/src/main/java/dev/figboot/launcher/core/config/SimpleLauncherConfiguration.java index 15ab1be..6e4615f 100644 --- a/core/src/main/java/dev/figboot/launcher/core/config/SimpleLauncherConfiguration.java +++ b/core/src/main/java/dev/figboot/launcher/core/config/SimpleLauncherConfiguration.java @@ -1,24 +1,44 @@ package dev.figboot.launcher.core.config; import dev.figboot.launcher.core.system.SystemInfo; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; import java.nio.file.Path; +import java.util.EnumMap; +import java.util.Map; +@RequiredArgsConstructor(access = AccessLevel.PROTECTED) public class SimpleLauncherConfiguration implements LauncherConfiguration { - //private final Path configPath, instancePath; + private final Path configPath, instancePath; + + public static SimpleLauncherConfiguration forOS(SystemInfo.OperatingSystem os) { + Map<LauncherDirectory, Path> launcherDirs = new EnumMap<>(LauncherDirectory.class); + launcherDirs.put + + switch (os) { + case WINDOWS: + String appDataPath = System.getenv("APPDATA"); + String homePath = System.getProperty("user.home"); + + if (appDataPath != null) { + + } + break; + } - public SimpleLauncherConfiguration() { - //configPath = FileSystems.getDefault(). } @Override public Path getConfigPath() { - return null; + return configPath; } @Override public Path getInstancesPath() { - return null; + return instancePath; } + + } |
