blob: 624b1e3e542a2bab46cae335f9569dd6bec4f42b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/* (C) 2025 Linnea Gräf - Licensed to everyone under the BSD 3 Clause License */
package moe.nea.prickly.config;
import java.util.List;
import java.util.stream.Collectors;
import lombok.ToString;
public class Config {
private static final ConfigPath ROOT = new ConfigPath("PRICKLY");
private static final ConfigPath NET = ROOT.join("NET");
private static final ConfigPath AUTH = ROOT.join("AUTH");
public static final int PORT = NET.join("PORT").requireInt();
public static final String COOKIE = AUTH.join("COOKIE").getString().orElse("AUTH_COOKIE");
public static final String SECRET = AUTH.join("SECRET").requireString();
public static final String HOST = NET.join("HOST").getString().orElse("0");
public static final List<Application> APPLICATIONS =
ROOT.join("APPLICATION").findChildren().map(Application::new).collect(Collectors.toList());
@ToString
public static class Application extends ConfigStruct {
Application(ConfigPath path) {
super(path);
}
public final String SLUG = path.lastPart();
public final String NAME = path.join("NAME").requireString();
public final String HOMEPAGE = path.join("HOMEPAGE").requireString();
}
static class ConfigStruct {
protected final ConfigPath path;
protected ConfigStruct(ConfigPath path) {
this.path = path;
}
}
}
|