Fallatól Config
Note: This is very much a work in progress.
Quickstart
Add to your dependencies:
libraryDependencies += "org.fallatol" %% "fallatol-config" % "0.3.0"
Since fallatol-config
is intended to work with sconfig
so you may also want to add it to your dependencies as
well:
libraryDependencies += "org.ekrich" %% "sconfig" % "1.8.1"
Example Usage
The example uses the following application.conf
file:
origin {
airport_code = "BOS"
airport_name = "Boston Logan International Airport"
}
destination {
airport_code = "KEF"
airport_name = "Keflavíkurflugvöllur"
}
Example:
import fallatol.config._
import org.ekrich.config._
def loadConfig = {
val config = ConfigFactory.load()
for {
origin <- config.get[String]("origin.airport_code")
destination <- config.get[String]("destination.airport_code")
} yield (origin, destination)
}
Example with custom ConfigMapper
for a case class:
import fallatol.config._
import org.ekrich.config._
case class Airport(code: String, name: String)
object Airport {
implicit val airportConfigMapper: ConfigMapper[Airport] =
ConfigMapper.fromConfig(config =>
for {
code <- config.get[String]("code")
name <- config.get[String]("name")
} yield Airport(code, name))
}
def loadConfig: ConfigResult[(Aiport, Aiport)] = {
val config = ConfigFactory.load()
for {
origin <- config.get[Airport]("origin")
destination <- config.get[Airport]("destination")
} yield (origin, destination)
}