non-strict parse of configs
parent
0178a09b80
commit
3bf2015716
@ -0,0 +1,20 @@
|
||||
package org.domaindrivenarchitecture.provs.framework.core
|
||||
|
||||
import com.charleskorn.kaml.Yaml
|
||||
import com.charleskorn.kaml.YamlConfiguration
|
||||
import kotlinx.serialization.InternalSerializationApi
|
||||
import kotlinx.serialization.serializer
|
||||
import java.io.BufferedReader
|
||||
import java.io.FileReader
|
||||
|
||||
|
||||
fun readFromFile(fileName: String): String {
|
||||
return BufferedReader(FileReader(fileName)).use { it.readText() }
|
||||
}
|
||||
|
||||
|
||||
@OptIn(InternalSerializationApi::class)
|
||||
inline fun <reified T : Any> String.yamlToType() = Yaml(configuration = YamlConfiguration(strictMode = false)).decodeFromString(
|
||||
T::class.serializer(),
|
||||
this
|
||||
)
|
@ -1,23 +1,14 @@
|
||||
package org.domaindrivenarchitecture.provs.server.infrastructure.k3s
|
||||
|
||||
import com.charleskorn.kaml.Yaml
|
||||
import kotlinx.serialization.json.Json
|
||||
import org.domaindrivenarchitecture.provs.configuration.domain.ConfigFileName
|
||||
import org.domaindrivenarchitecture.provs.server.domain.k3s.*
|
||||
import java.io.BufferedReader
|
||||
import java.io.FileReader
|
||||
import org.domaindrivenarchitecture.provs.framework.core.readFromFile
|
||||
import org.domaindrivenarchitecture.provs.framework.core.yamlToType
|
||||
import org.domaindrivenarchitecture.provs.server.domain.k3s.K3sConfig
|
||||
|
||||
|
||||
public fun getK3sConfig(configFileName: ConfigFileName): K3sConfig {
|
||||
// read file
|
||||
val inputAsString = BufferedReader(FileReader(configFileName.fileName)).use { it.readText() }
|
||||
private const val DEFAULT_CONFIG_FILE = "ServerConfig.yaml"
|
||||
|
||||
fun getK3sConfig(fileName: ConfigFileName?): K3sConfig {
|
||||
return readFromFile(fileName?.fileName ?: DEFAULT_CONFIG_FILE).yamlToType()
|
||||
}
|
||||
|
||||
// deserializing
|
||||
val config =
|
||||
if (configFileName.fileName.lowercase().endsWith(".yaml")) {
|
||||
Yaml.default.decodeFromString(K3sConfig.serializer(), inputAsString)
|
||||
} else {
|
||||
Json.decodeFromString(K3sConfig.serializer(), inputAsString)
|
||||
}
|
||||
return config
|
||||
}
|
@ -0,0 +1 @@
|
||||
wrongfield: 123
|
@ -1,2 +1 @@
|
||||
type: WRONGTYPE # IDE, OFFICE or MINIMAL
|
||||
nonexistingkey: foo
|
Loading…
Reference in New Issue