summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/prickly/config/ConfigPath.java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-10-12 16:16:36 +0200
committerLinnea Gräf <nea@nea.moe>2025-10-12 16:16:36 +0200
commit62bbe7c687f99bd0e51aafc43416768c00aaafa4 (patch)
tree25b484a94cab1f9336946e93fb8eb332eeb32125 /src/main/java/moe/nea/prickly/config/ConfigPath.java
downloadprickly-62bbe7c687f99bd0e51aafc43416768c00aaafa4.tar.gz
prickly-62bbe7c687f99bd0e51aafc43416768c00aaafa4.tar.bz2
prickly-62bbe7c687f99bd0e51aafc43416768c00aaafa4.zip
init: create basic server + config
Diffstat (limited to 'src/main/java/moe/nea/prickly/config/ConfigPath.java')
-rw-r--r--src/main/java/moe/nea/prickly/config/ConfigPath.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/prickly/config/ConfigPath.java b/src/main/java/moe/nea/prickly/config/ConfigPath.java
new file mode 100644
index 0000000..3311910
--- /dev/null
+++ b/src/main/java/moe/nea/prickly/config/ConfigPath.java
@@ -0,0 +1,57 @@
+package moe.nea.prickly.config;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Optional;
+import java.util.function.Supplier;
+
+@Slf4j
+public record ConfigPath(String path) {
+ public ConfigPath join(String extraPath) {
+ return new ConfigPath(path + "_" + extraPath);
+ }
+
+ public Optional<String> getString() {
+ return Optional.ofNullable(ConfigCompat.getEnv(path));
+ }
+
+ public Optional<Integer> getInt() {
+ var str = getString();
+ if (str.isPresent())
+ try {
+ return Optional.of(Integer.parseInt(str.get()));
+ } catch (NumberFormatException ex) {
+ log.warn("could not parse config value at {}", path, ex);
+ }
+ return Optional.empty();
+ }
+
+ public Optional<Boolean> getBoolean() {
+ var str = getString();
+ if (str.isPresent()) {
+ var sstr = str.get();
+ if (sstr.equalsIgnoreCase("true") || sstr.equals("1"))
+ return OPT_TRUE;
+ else if (sstr.equalsIgnoreCase("false") || sstr.equals("0"))
+ return OPT_FALSE;
+ else
+ log.warn("could not parse boolean value at {}", path);
+ }
+ return Optional.empty();
+ }
+
+ private static final Optional<Boolean> OPT_TRUE = Optional.of(true),
+ OPT_FALSE = Optional.of(false);
+
+ public Supplier<RuntimeException> requireMessage() {
+ return () -> new RuntimeException("missing required value at path " + path());
+ }
+
+ public String requireString() {
+ return getString().orElseThrow(requireMessage());
+ }
+
+ public int requireInt() {
+ return getInt().orElseThrow(requireMessage());
+ }
+}