Add kotlinx-coroutines + kotlinx-datetime, and save Configuration.obtained when it is constructed
This commit is contained in:
parent
282f873da4
commit
c2b87fddbc
|
@ -26,6 +26,7 @@ architectury {
|
||||||
minecraft = rootProject.property("minecraft") as String
|
minecraft = rootProject.property("minecraft") as String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val kotlinX: String = "org.jetbrains.kotlinx"
|
||||||
subprojects {
|
subprojects {
|
||||||
group = rootProject.group.toString()
|
group = rootProject.group.toString()
|
||||||
lateinit var mappingsDep: Dependency
|
lateinit var mappingsDep: Dependency
|
||||||
|
@ -78,7 +79,11 @@ subprojects {
|
||||||
exclude(module = "kotlin-stdlib-common")
|
exclude(module = "kotlin-stdlib-common")
|
||||||
exclude(module = "annotations")
|
exclude(module = "annotations")
|
||||||
}
|
}
|
||||||
"io.github.config4k:config4k:0.4.2".also { implementation(it); shadowC(it) }
|
listOf(
|
||||||
|
"$kotlinX:kotlinx-coroutines-core:1.5.0-RC",
|
||||||
|
"$kotlinX:kotlinx-datetime:0.2.0",
|
||||||
|
"io.github.config4k:config4k:0.4.2"
|
||||||
|
).forEach { implementation(it); shadowC(it) }
|
||||||
"minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}")
|
"minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}")
|
||||||
"mappings"(mappingsDep)
|
"mappings"(mappingsDep)
|
||||||
}
|
}
|
||||||
|
@ -98,6 +103,7 @@ allprojects {
|
||||||
tasks {
|
tasks {
|
||||||
withType(ShadowJar::class) {
|
withType(ShadowJar::class) {
|
||||||
relocate("kotlin", "${rootProject.group}.kotlin")
|
relocate("kotlin", "${rootProject.group}.kotlin")
|
||||||
|
relocate("org.jetbrains", "${rootProject.group}.jetbrainslibs")
|
||||||
relocate("com.typesafe.config", "${rootProject.group}.typesafe.config")
|
relocate("com.typesafe.config", "${rootProject.group}.typesafe.config")
|
||||||
relocate("io.github.config4k", "${rootProject.group}.config4k")
|
relocate("io.github.config4k", "${rootProject.group}.config4k")
|
||||||
exclude("**/*.kotlin_metadata")
|
exclude("**/*.kotlin_metadata")
|
||||||
|
|
|
@ -6,6 +6,9 @@ import com.typesafe.config.ConfigFactory
|
||||||
import com.typesafe.config.ConfigRenderOptions
|
import com.typesafe.config.ConfigRenderOptions
|
||||||
import fr.username404.snowygui.Snowy
|
import fr.username404.snowygui.Snowy
|
||||||
import io.github.config4k.extract
|
import io.github.config4k.extract
|
||||||
|
import kotlinx.coroutines.coroutineScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
@ -17,6 +20,24 @@ object Configuration {
|
||||||
|}
|
|}
|
||||||
""".trimMargin()
|
""".trimMargin()
|
||||||
private val baseConf = ConfigFactory.parseString(base)
|
private val baseConf = ConfigFactory.parseString(base)
|
||||||
|
private suspend fun writeConfig(c: Config) = coroutineScope {
|
||||||
|
launch {
|
||||||
|
file.writeText(
|
||||||
|
"""
|
||||||
|
Snowy {
|
||||||
|
${
|
||||||
|
c.root().render(
|
||||||
|
ConfigRenderOptions.defaults()
|
||||||
|
.setFormatted(true)
|
||||||
|
.setJson(false)
|
||||||
|
.setOriginComments(false)
|
||||||
|
).trimEnd()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@JvmField
|
@JvmField
|
||||||
val obtained: Config = run {
|
val obtained: Config = run {
|
||||||
var result: Config = baseConf
|
var result: Config = baseConf
|
||||||
|
@ -32,24 +53,15 @@ object Configuration {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConfigFactory.load(result).extract<Config>("Snowy").resolveWith(baseConf)
|
ConfigFactory.load(result).extract<Config>("Snowy").resolveWith(baseConf)
|
||||||
|
}.also {
|
||||||
|
runBlocking {
|
||||||
|
writeConfig(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
init {
|
init {
|
||||||
Runtime.getRuntime().addShutdownHook(
|
Runtime.getRuntime().addShutdownHook(
|
||||||
Thread {
|
Thread {
|
||||||
file.writeText(
|
runBlocking { writeConfig(obtained).join() }
|
||||||
"""
|
|
||||||
Snowy {
|
|
||||||
${
|
|
||||||
obtained.root().render(
|
|
||||||
ConfigRenderOptions.defaults()
|
|
||||||
.setFormatted(true)
|
|
||||||
.setJson(false)
|
|
||||||
.setOriginComments(false)
|
|
||||||
).trimEnd()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
""".trimIndent()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue