Files
AnyTask/src/main/kotlin/ch/ergon/anytask/config/Configuration.kt
T
2026-04-03 13:31:00 +02:00

39 lines
1.0 KiB
Kotlin

package ch.ergon.anytask.config
import com.charleskorn.kaml.Yaml
import kotlinx.serialization.Serializable
import java.io.File
@Serializable
data class Connection(
val apiKey: String = "",
val baseUrl: String = "http://localhost:31009",
)
@Serializable
data class Configuration(
val connection: Connection = Connection(),
val spaceId: String = "",
)
fun loadConfig(): Configuration {
val yaml = Yaml.default
val serializer = Configuration.serializer()
// External files take precedence (production use)
val externalLocations = listOf(
File(System.getProperty("user.home"), ".anytask/anytask.yaml"),
File("anytask.yaml"),
)
externalLocations.firstOrNull { it.exists() }?.let {
return yaml.decodeFromString(serializer, it.readText())
}
// Fallback: classpath resource (development)
Configuration::class.java.getResourceAsStream("/anytask.yaml")?.let {
return yaml.decodeFromString(serializer, it.bufferedReader().readText())
}
return Configuration()
}