'How to read an environment variable in Kotlin?
I'd like to get a certain value from an environment variable in my Kotlin app, but I can't find anything about reading environment variables in the core libraries documentation.
I'd expect it to be under kotlin.system but there's really not that much there.
Solution 1:[1]
It is really easy to get a environment value if it exists or a default value by using the elvis operator in kotlin:
var envVar: String = System.getenv("varname") ?: "default_value"
Solution 2:[2]
You could always go down this approach:
val envVar : String? = System.getenv("varname")
Though, to be fair, this doesn't feel particularly idiomatic, as you're leveraging Java's System class, not Kotlin's.
Solution 3:[3]
And if you want to handle env var which do exists but is empty:
val myEnv = (System.getenv("MY_ENV") ?: "").ifEmpty { "default_value" }
(see edit history for previos versions)
Solution 4:[4]
You can use the kotlin extension Konfig
Konfig - A Type Safe Configuration API for Kotlin
Konfig provides an extensible, type-safe API for configuration properties gathered from multiple sources — built in resources, system properties, property files, environment variables, command-line arguments, etc.
For example: Key("http.port", intType)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Patrick Boos |
Solution 2 | |
Solution 3 | |
Solution 4 |