diff options
| author | Linnea Gräf <nea@nea.moe> | 2025-10-12 16:16:36 +0200 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-10-12 16:16:36 +0200 |
| commit | 62bbe7c687f99bd0e51aafc43416768c00aaafa4 (patch) | |
| tree | 25b484a94cab1f9336946e93fb8eb332eeb32125 /src/main/java/moe/nea/prickly/config/ConfigPath.java | |
| download | prickly-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.java | 57 |
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()); + } +} |
