Skip to content

Commit a8e4192

Browse files
committed
feat: Better config management
1 parent 6648c6c commit a8e4192

File tree

4 files changed

+42
-14
lines changed

4 files changed

+42
-14
lines changed

src/main/java/dev/loat/Backup.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,24 @@
88
import dev.loat.config.Config;
99
import dev.loat.config.ConfigManager;
1010
import dev.loat.config.files.BackupConfigFile;
11+
import dev.loat.config.files.BackupTextsFile;
1112

1213

1314
public class Backup implements ModInitializer {
14-
15-
16-
private static Config<BackupConfigFile> config;
17-
18-
@SuppressWarnings("null")
1915
@Override
2016
public void onInitialize() {
2117
Logger.setLoggerClass(Backup.class);
2218

23-
Backup.config = ConfigManager.CONFIG;
19+
ConfigManager.addConfig(new Config<>(
20+
ConfigManager.resolve("config.yml"),
21+
BackupConfigFile.class
22+
));
23+
24+
ConfigManager.addConfig(new Config<>(
25+
ConfigManager.resolve("texts.yml"),
26+
BackupTextsFile.class
27+
));
28+
2429
CommandManager.register();
2530

2631
Logger.info("Backup loaded.");

src/main/java/dev/loat/config/Config.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ public Config(
3737
}
3838
}
3939

40+
Class<ConfigFile> getConfigFileClass() {
41+
return this.configFileClass;
42+
}
43+
4044
@SuppressWarnings("null")
4145
public void load() {
4246
try {

src/main/java/dev/loat/config/ConfigManager.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,27 @@
33
import java.io.IOException;
44
import java.nio.file.Files;
55
import java.nio.file.Path;
6+
import java.util.HashMap;
7+
import java.util.Map;
68

7-
import dev.loat.config.files.BackupConfigFile;
89
import dev.loat.logging.Logger;
910
import net.fabricmc.loader.api.FabricLoader;
1011

11-
1212
public class ConfigManager {
1313

1414
public static final String path = "backup";
15+
private static final Map<Class<?>, Config<?>> configs = new HashMap<>();
1516

16-
@SuppressWarnings("null")
17-
public static final Config<BackupConfigFile> CONFIG = new Config<>(
18-
ConfigManager.resolve("config.yml"),
19-
BackupConfigFile.class
20-
);
17+
public static <ConfigFile> void addConfig(
18+
Config<ConfigFile> config
19+
) {
20+
configs.put(config.getConfigFileClass(), config);
21+
}
2122

23+
@SuppressWarnings("unchecked")
24+
public static <ConfigFile> Config<ConfigFile> getConfig(Class<ConfigFile> type) {
25+
return (Config<ConfigFile>) configs.get(type);
26+
}
2227

2328
public static Path resolve(String configFile) {
2429
return ConfigManager.resolve(Path.of(configFile));
@@ -39,6 +44,6 @@ public static Path resolve(Path configFile) {
3944
}
4045

4146
public static void loadAll() {
42-
CONFIG.load();
47+
ConfigManager.configs.values().forEach(Config::load);
4348
}
4449
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.loat.config.files;
2+
3+
import dev.loat.config.annotation.Comment;
4+
5+
public final class BackupTextsFile {
6+
@Comment("""
7+
Path to the directory where backup files should be saved. This can be both,
8+
an absolute or relative path to the game folder.
9+
10+
If no absolute path is specified, it defaults to the current working directory,
11+
aka. to the directory where the server.jar sits in.
12+
""")
13+
public String path = "./backups";
14+
}

0 commit comments

Comments
 (0)