aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/config
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-03-29 17:10:01 +0200
committernea <nea@nea.moe>2023-03-29 17:10:01 +0200
commit96808d7d3c2dd1abd8d619b4b97d075db6a154e0 (patch)
treee103dbfb8fbe0ad9c547c57d855a2ad60ca9d1df /src/main/java/at/hannibal2/skyhanni/config
parenta972a28f62d86c0c28c70f0604039dbe2271cdcc (diff)
downloadSkyHanni-feat/moulconfig.tar.gz
SkyHanni-feat/moulconfig.tar.bz2
SkyHanni-feat/moulconfig.zip
config backups and better property adapterfeat/moulconfig
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/config')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
index e3b040391..75e31ab2a 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
@@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.config
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.ConfigLoadEvent
import com.google.gson.GsonBuilder
+import io.github.moulberry.moulconfig.observer.PropertyTypeAdapterFactory
import io.github.moulberry.moulconfig.processor.BuiltinMoulConfigGuis
import io.github.moulberry.moulconfig.processor.ConfigProcessorDriver
import io.github.moulberry.moulconfig.processor.MoulConfigProcessor
@@ -11,9 +12,14 @@ import java.nio.charset.StandardCharsets
class ConfigManager {
companion object {
- val gson = GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create()
+ val gson = GsonBuilder().setPrettyPrinting()
+ .excludeFieldsWithoutExposeAnnotation()
+ .registerTypeAdapterFactory(PropertyTypeAdapterFactory())
+ .create()
}
+ val logger = SkyHanniMod.getLogger("ConfigManager")
+
var configDirectory = File("config/skyhanni")
private var configFile: File? = null
lateinit var processor: MoulConfigProcessor<Features>
@@ -26,23 +32,39 @@ class ConfigManager {
configFile = File(configDirectory, "config.json")
+ logger.info("Trying to load config from $configFile")
+
if (configFile!!.exists()) {
try {
BufferedReader(InputStreamReader(FileInputStream(configFile!!), StandardCharsets.UTF_8)).use { reader ->
- SkyHanniMod.feature = gson.fromJson(reader,
- Features::class.java)
+ SkyHanniMod.feature = gson.fromJson(
+ reader,
+ Features::class.java
+ )
}
- ConfigLoadEvent().postAndCatch()
+ logger.info("Loaded config from file")
} catch (e: Exception) {
- e.printStackTrace()
+ val backupFile = configFile!!.resolveSibling("config-${System.currentTimeMillis()}-backup.json")
+ logger.error(
+ "Exception while reading $configFile. Will load blank config and save backup to $backupFile",
+ e
+ )
+ try {
+ configFile!!.copyTo(backupFile)
+ } catch (e: Exception) {
+ logger.error("Could not create backup for config file", e)
+ }
}
}
if (SkyHanniMod.feature == null) {
+ logger.info("Creating blank config and saving to file")
SkyHanniMod.feature = Features()
saveConfig()
}
+ ConfigLoadEvent().postAndCatch()
+
val features = SkyHanniMod.feature
processor = MoulConfigProcessor(SkyHanniMod.feature)
BuiltinMoulConfigGuis.addProcessors(processor)
@@ -51,17 +73,18 @@ class ConfigManager {
features,
processor
)
- SkyHanniMod.DEPENDENCIES
}
fun saveConfig() {
try {
+ logger.info("Saving config file")
+ configFile!!.parentFile.mkdirs()
configFile!!.createNewFile()
BufferedWriter(OutputStreamWriter(FileOutputStream(configFile!!), StandardCharsets.UTF_8)).use { writer ->
writer.write(gson.toJson(SkyHanniMod.feature))
}
} catch (e: IOException) {
- e.printStackTrace()
+ logger.error("Could not save config file to $configFile", e)
}
}
} \ No newline at end of file