Reformat Configuration.kt
This commit is contained in:
		
							parent
							
								
									4ce4e79287
								
							
						
					
					
						commit
						9a2a78a3a3
					
				@ -3,8 +3,8 @@ package fr.username404.snowygui.config
 | 
				
			|||||||
import com.typesafe.config.Config
 | 
					import com.typesafe.config.Config
 | 
				
			||||||
import com.typesafe.config.ConfigException
 | 
					import com.typesafe.config.ConfigException
 | 
				
			||||||
import com.typesafe.config.ConfigFactory.empty
 | 
					import com.typesafe.config.ConfigFactory.empty
 | 
				
			||||||
import com.typesafe.config.ConfigFactory.parseFile
 | 
					 | 
				
			||||||
import com.typesafe.config.ConfigFactory.load
 | 
					import com.typesafe.config.ConfigFactory.load
 | 
				
			||||||
 | 
					import com.typesafe.config.ConfigFactory.parseFile
 | 
				
			||||||
import com.typesafe.config.ConfigFactory.parseString
 | 
					import com.typesafe.config.ConfigFactory.parseString
 | 
				
			||||||
import com.typesafe.config.ConfigRenderOptions
 | 
					import com.typesafe.config.ConfigRenderOptions
 | 
				
			||||||
import com.typesafe.config.ConfigValueFactory
 | 
					import com.typesafe.config.ConfigValueFactory
 | 
				
			||||||
@ -16,6 +16,11 @@ import fr.username404.snowygui.gui.feature.Category
 | 
				
			|||||||
import fr.username404.snowygui.gui.feature.Macro
 | 
					import fr.username404.snowygui.gui.feature.Macro
 | 
				
			||||||
import io.github.config4k.extract
 | 
					import io.github.config4k.extract
 | 
				
			||||||
import io.github.config4k.getValue
 | 
					import io.github.config4k.getValue
 | 
				
			||||||
 | 
					import net.minecraft.client.Minecraft
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import kotlin.reflect.KProperty
 | 
				
			||||||
import kotlinx.coroutines.CoroutineStart
 | 
					import kotlinx.coroutines.CoroutineStart
 | 
				
			||||||
import kotlinx.coroutines.coroutineScope
 | 
					import kotlinx.coroutines.coroutineScope
 | 
				
			||||||
import kotlinx.coroutines.launch
 | 
					import kotlinx.coroutines.launch
 | 
				
			||||||
@ -23,9 +28,6 @@ import kotlinx.coroutines.runBlocking
 | 
				
			|||||||
import kotlinx.serialization.decodeFromString
 | 
					import kotlinx.serialization.decodeFromString
 | 
				
			||||||
import kotlinx.serialization.encodeToString
 | 
					import kotlinx.serialization.encodeToString
 | 
				
			||||||
import kotlinx.serialization.json.Json
 | 
					import kotlinx.serialization.json.Json
 | 
				
			||||||
import net.minecraft.client.Minecraft
 | 
					 | 
				
			||||||
import java.io.File
 | 
					 | 
				
			||||||
import kotlin.reflect.KProperty
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
object Configuration {
 | 
					object Configuration {
 | 
				
			||||||
    @Deprecated("Use the getValue or setValue methods instead", level = DeprecationLevel.ERROR)
 | 
					    @Deprecated("Use the getValue or setValue methods instead", level = DeprecationLevel.ERROR)
 | 
				
			||||||
@ -45,42 +47,8 @@ object Configuration {
 | 
				
			|||||||
            }.toTypedArray()),
 | 
					            }.toTypedArray()),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    private fun Config.withFullModifiableValues() = @Suppress("DEPRECATION_ERROR")
 | 
					 | 
				
			||||||
        ModifiableValues.entries.fold(this) { previous, entry ->
 | 
					 | 
				
			||||||
            previous.withValue(entry.key, entry.value.let {
 | 
					 | 
				
			||||||
                ConfigValueFactory.fromAnyRef(
 | 
					 | 
				
			||||||
                    if (it !is Lazy<*>) ConfigValueFactory.fromAnyRef(it) else it.value
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    private val configDirectory: String = (Minecraft.getInstance().gameDirectory.absolutePath + File.separator + "config").also { File(it).mkdir() }
 | 
					    private val configDirectory: String = (Minecraft.getInstance().gameDirectory.absolutePath + File.separator + "config").also { File(it).mkdir() }
 | 
				
			||||||
    private val file: File = File(configDirectory + File.separator + "snowy.conf")
 | 
					    private val file: File = File(configDirectory + File.separator + "snowy.conf")
 | 
				
			||||||
    private suspend fun writeConfig(c: Config) = coroutineScope {
 | 
					 | 
				
			||||||
        launch(start = CoroutineStart.UNDISPATCHED) {
 | 
					 | 
				
			||||||
            file.writeText(
 | 
					 | 
				
			||||||
                """
 | 
					 | 
				
			||||||
                |Snowy {
 | 
					 | 
				
			||||||
                |${
 | 
					 | 
				
			||||||
                      c.root().render(
 | 
					 | 
				
			||||||
                          ConfigRenderOptions.defaults()
 | 
					 | 
				
			||||||
                              .setFormatted(true)
 | 
					 | 
				
			||||||
                              .setJson(false)
 | 
					 | 
				
			||||||
                              .setOriginComments(false)
 | 
					 | 
				
			||||||
                      ).prependIndent("  ").trimEnd()
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
                |}
 | 
					 | 
				
			||||||
                """.trimMargin()
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    operator fun invoke() = obtained
 | 
					 | 
				
			||||||
    inline operator fun <reified T> getValue(ref: Any?, property: KProperty<*>): T = @Suppress("DEPRECATION_ERROR")
 | 
					 | 
				
			||||||
        if (ModifiableValues.containsKey(property.name)) ModifiableValues[property.name] as T else invoke().getValue(ref, property)
 | 
					 | 
				
			||||||
    operator fun <T> setValue(ref: Any?, property: KProperty<*>, value: T) = @Suppress("DEPRECATION_ERROR")
 | 
					 | 
				
			||||||
        ModifiableValues.setValue(ref, property, value)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private val obtained: Config = run {
 | 
					    private val obtained: Config = run {
 | 
				
			||||||
        var result: Config = empty()
 | 
					        var result: Config = empty()
 | 
				
			||||||
        with(file) {
 | 
					        with(file) {
 | 
				
			||||||
@ -113,7 +81,9 @@ object Configuration {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    val enabledFeatures = mutableMapOf<String, Boolean>().apply {
 | 
					    val enabledFeatures = mutableMapOf<String, Boolean>().apply {
 | 
				
			||||||
        "enabledFeatures".let { obtained.run {
 | 
					        "enabledFeatures".let { obtained.run {
 | 
				
			||||||
            if (hasPath(it)) { putAll(extract(it)) }
 | 
					            if (hasPath(it)) {
 | 
				
			||||||
 | 
					                putAll(extract(it))
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        } }
 | 
					        } }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    internal val foundMacros: Set<Macro> = run {
 | 
					    internal val foundMacros: Set<Macro> = run {
 | 
				
			||||||
@ -135,4 +105,40 @@ object Configuration {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    private fun Config.withFullModifiableValues() = @Suppress("DEPRECATION_ERROR")
 | 
				
			||||||
 | 
					    ModifiableValues.entries.fold(this) { previous, entry ->
 | 
				
			||||||
 | 
					        previous.withValue(entry.key, entry.value.let {
 | 
				
			||||||
 | 
					            ConfigValueFactory.fromAnyRef(
 | 
				
			||||||
 | 
					                if (it !is Lazy<*>) ConfigValueFactory.fromAnyRef(it) else it.value
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private suspend fun writeConfig(c: Config) = coroutineScope {
 | 
				
			||||||
 | 
					        launch(start = CoroutineStart.UNDISPATCHED) {
 | 
				
			||||||
 | 
					            file.writeText(
 | 
				
			||||||
 | 
					                """
 | 
				
			||||||
 | 
					                |Snowy {
 | 
				
			||||||
 | 
					                |${
 | 
				
			||||||
 | 
					                    c.root().render(
 | 
				
			||||||
 | 
					                        ConfigRenderOptions.defaults()
 | 
				
			||||||
 | 
					                            .setFormatted(true)
 | 
				
			||||||
 | 
					                            .setJson(false)
 | 
				
			||||||
 | 
					                            .setOriginComments(false)
 | 
				
			||||||
 | 
					                    ).prependIndent("  ").trimEnd()
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                |}
 | 
				
			||||||
 | 
					                """.trimMargin()
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operator fun invoke() = obtained
 | 
				
			||||||
 | 
					    inline operator fun <reified T> getValue(ref: Any?, property: KProperty<*>): T =
 | 
				
			||||||
 | 
					        @Suppress("DEPRECATION_ERROR")
 | 
				
			||||||
 | 
					        if (ModifiableValues.containsKey(property.name))
 | 
				
			||||||
 | 
					            ModifiableValues[property.name] as T
 | 
				
			||||||
 | 
					        else invoke().getValue(ref, property)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operator fun <T> setValue(ref: Any?, property: KProperty<*>, value: T) = @Suppress("DEPRECATION_ERROR")
 | 
				
			||||||
 | 
					    ModifiableValues.setValue(ref, property, value)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user