From 62bbe7c687f99bd0e51aafc43416768c00aaafa4 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 12 Oct 2025 16:16:36 +0200 Subject: init: create basic server + config --- .../java/moe/nea/prickly/config/ConfigPath.java | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/moe/nea/prickly/config/ConfigPath.java (limited to 'src/main/java/moe/nea/prickly/config/ConfigPath.java') 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 getString() { + return Optional.ofNullable(ConfigCompat.getEnv(path)); + } + + public Optional 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 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 OPT_TRUE = Optional.of(true), + OPT_FALSE = Optional.of(false); + + public Supplier requireMessage() { + return () -> new RuntimeException("missing required value at path " + path()); + } + + public String requireString() { + return getString().orElseThrow(requireMessage()); + } + + public int requireInt() { + return getInt().orElseThrow(requireMessage()); + } +} -- cgit