This object was generated by sbt-buildinfo.
Use functions in this Config
object when you need to retrieve your instance of config in terms of zio.Layer.
Use functions in this Config
object when you need to retrieve your instance of config in terms of zio.Layer.
For example:
final case class MyConfig(dburl: String, port: Int) val myConfigDesc: ConfigDescriptor[MyConfig] = (string("dburl") |@| int("port"))(MyConfig.apply, MyConfig.unapply) val myConfig: Layer[ReadError[String], Config[MyConfig]] = Config.fromSystemEnv(myConfigDesc)
By using Config.fromSystemEnv(myConfigDesc)
, it internally extends your description which is myConfigDesc
to include the ConfigSource
.
In the above example, it is the ConfigSource
corresponding to
sys.env.
It then calls
zio.config.read with this new description that includes the source information.
Extending an existing config description to include a ConfigSource
is as simple as
myConfigDesc from configSource
Also, note that Config[MyConfig]
in the above example is a simple type alias to Has[MyConfig]
.
If you want to retrieve your config as scala.Either instead of zio.Layer, then you will have to extend
your description to include the information on ConfigSource
manually.
For example:
import zio.config._, ConfigDescriptor._ final case class MyConfig(dburl: String, port: Int) val myConfig: ConfigDescriptor[MyConfig] = (string("dburl") |@| int("port"))(MyConfig.apply, MyConfig.unapply) val constantSource: ConfigSource = ConfigSource.fromMap(Map("dburl" -> "xyz", "port" -> "8080")) val result: Either[ReadError[String], MyConfig] = read(myConfig from constantSource)
Note: With the above approach, we got a simple scala.Either instead of retrieving them in terms of ZIO.
Instead of the above approach, if we use Config.fromMap(constantMap, myConfig)
,
then we will get a Layer[ReadError[String], MyConfig]
The above approach is especially useful when we have a custom ConfigSource
.
For instance, we can form a custom ConfigSource
by composing a few existing ConfigSources.
For example:
import zio.config._, ConfigDescriptor._ final case class MyConfig(dburl: String, port: Int) val myConfig: ConfigDescriptor[MyConfig] = (string("dburl") |@| int("port"))(MyConfig.apply, MyConfig.unapply) val sysEnvSource: UIO[MyConfig] = ConfigSource.fromSystemEnv val constantSource: ConfigSource = ConfigSource.fromMap(Map("dburl" -> "xyz", "port" -> "8080")) val result: IO[ReadError[String], MyConfig] = configSource.flatMap(source => read(myConfig from sysEnvSource.orElse(constantSource))
In the above example, the results returned an UIO because of the existence of ConfigSource corresponding to
sys.env.
Generate documentation based on the ConfigDescriptor
, where a
ConfigDescriptor
is a structure representing the logic to fetch the application config
from various sources.
Generate documentation based on the ConfigDescriptor
, where a
ConfigDescriptor
is a structure representing the logic to fetch the application config
from various sources.
Generate a report based on the ConfigDescriptor
and an A
, where a
ConfigDescriptor
represents the logic to fetch the application config
from various sources, and A
represents the actual config value that was retrieved.
Generate a report based on the ConfigDescriptor
and an A
, where a
ConfigDescriptor
represents the logic to fetch the application config
from various sources, and A
represents the actual config value that was retrieved.