summaryrefslogtreecommitdiffstats
path: root/core/src/main/java/dev/figboot/launcher
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <[email protected]>2025-08-26 16:09:16 -0500
committerLibravatar bigfoot547 <[email protected]>2025-08-26 16:09:16 -0500
commite54c17972fc44dc780d9273af91401f329d2b69c (patch)
treef7848182bdc4dd9dd631ad56f2de1cc8c0c85b92 /core/src/main/java/dev/figboot/launcher
parentinitial commit (diff)
wip: config
Diffstat (limited to 'core/src/main/java/dev/figboot/launcher')
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/DefaultLauncherDirectories.java25
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectories.java15
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/LauncherDirectory.java7
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/OSLauncherDirectories.java23
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/PropertyLauncherDirectories.java19
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/config/SimpleLauncherConfiguration.java30
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;
}
+
+
}