diff options
| author | nea <nea@nea.moe> | 2023-03-29 17:10:01 +0200 |
|---|---|---|
| committer | nea <nea@nea.moe> | 2023-03-29 17:10:01 +0200 |
| commit | 96808d7d3c2dd1abd8d619b4b97d075db6a154e0 (patch) | |
| tree | e103dbfb8fbe0ad9c547c57d855a2ad60ca9d1df /src/main/java/at/hannibal2/skyhanni/config | |
| parent | a972a28f62d86c0c28c70f0604039dbe2271cdcc (diff) | |
| download | SkyHanni-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.kt | 37 |
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 |
