39 lines
1.0 KiB
Kotlin
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()
|
|
}
|