Little scala extension to Typesafe Config
libraryDependencies += "com.github.andyglow" %% "typesafe-config-scala" % ${LATEST_VERSION} % Compile
Import it
import com.github.andyglow.config._
And then you will be able to
val v1 = config.get[String]("path")
val v2 = config.get[Int]("path")
val v3 = config.get[FiniteDuration]("path")
// optional value
val opt1: Option[String] = config.opt[String]("path")
val opt2: Option[String] = config.get[Option[String]]("path")
val val3: String = config.getOrElse[String]("path", "default")
val list1 = config.get[List[String]]("path")
val set2 = config.get[Set[Int]]("path")
val iterator3 = config.get[Iterator[ConfigMemorySize]]("path")
String
Int
Boolean
Double
Long
Bytes
(file size, etc...)Duration
(java)Duration
(scala)FiniteDuration
ConfigList
Config
ConfigObject
ConfigMemorySize
java.util.Date
(to demonstrate how it might be extended)Option[T]
whereT
is one of the supported types- scala collections.
Seq[T]
, etc. Any sort of collection types which has corresponsingCanBuildFrom
Also this can be extended by providing implementations for FromConf
and/or ConfType
(used for collections and might be implicitly reused for FromConf
)
For example take a look at com.github.andyglow.config.ConfType#juDateT
implementation
and spec at com.github.andyglow.config.JavaUtilDateExtSpec
- Experiment with macro-based config reader which could read out the config into a case class
- ADT for Enums (also macro)