ZIO Config
ZIO Config is a ZIO-based library and act as an extension to core library ZIO's Config
language.
Let's enumerate some key features of this library:
- Support for Various Sources — It can read flat or nested configurations. Thanks to
IndexedFlat
. - Automatic Document Generation — It can auto-generate documentation of configurations.
- Automatic Derivation — It has built-in support for automatic derivation of readers and writers for case classes and sealed traits.
- Type-level Constraints and Automatic Validation — because it supports Refined types, we can write type-level predicates which constrain the set of values described for data types.
- Descriptive Errors — It accumulates all errors and reports all of them to the user rather than failing fast.
- Integrations — Integrations with a variety of libraries
If you are only interested in automatic derivation of configuration, find the details here
Installation​
In order to use this library, we need to add the following line in our build.sbt
file:
libraryDependencies += "dev.zio" %% "zio-config" % "<version>"
Quick Start
Let's add these four lines to our build.sbt
file as we are using these modules in our examples:
libraryDependencies += "dev.zio" %% "zio-config" % "<version>"
libraryDependencies += "dev.zio" %% "zio-config-magnolia" % "<version>"
libraryDependencies += "dev.zio" %% "zio-config-typesafe" % "<version>"
libraryDependencies += "dev.zio" %% "zio-config-refined" % "<version>"
There are many examples in here