import ciris._
import ciris.cats.effect._
import cats.effect.IO
import cats.syntax.functor._
object Main extends App {
case class DatabaseConfig(url: String, user: String, password: String)
val config = (
env("DB_URL").as[String],
env("DB_USER").as[String],
env("DB_PASSWORD").as[String]
).parMapN(DatabaseConfig)
val result: IO[Either[ConfigError, DatabaseConfig]] = config.load[IO]
result.map {
println(s"Database URL: ${databaseConfig.url}")
println(s"Database User: ${databaseConfig.user}")
println(s"Database Password: ${databaseConfig.password}")
println(s"Configuration error: ${error.messages.toList.mkString(", ")}")
}.unsafeRunSync()
}
<dependency>
<groupId>is.cir</groupId>
<artifactId>ciris-core_2.12</artifactId>
<version>0.12.1</version>
</dependency>
<dependency>
<groupId>is.cir</groupId>
<artifactId>ciris-enumeratum_2.12</artifactId>
<version>0.12.1</version>
</dependency>
<dependency>
<groupId>is.cir</groupId>
<artifactId>ciris-generic_2.12</artifactId>
<version>0.12.1</version>
</dependency>
<dependency>
<groupId>is.cir</groupId>
<artifactId>ciris-refined_2.12</artifactId>
<version>0.12.1</version>
</dependency>
<dependency>
<groupId>is.cir</groupId>
<artifactId>ciris-test_2.12</artifactId>
<version>0.12.1</version>
<scope>test</scope>
</dependency>