DIConfigReader

izumi.distage.config.codec.DIConfigReader
See theDIConfigReader companion object

Config reader that uses a pureconfig.ConfigReader implicit instance for a type to decode it from Typesafe Config.

Always automatically derives a codec if it's not available.

Automatic derivation will use camelCase fields, NOT kebab-case fields, as in default pureconfig. It also overrides pureconfig's default type field type discriminator for sealed traits, instead using a circe-like format with a single-key object.

Example:

 sealed trait AorB
 final case class A(a: Int) extends AorB
 final case class B(b: String) extends AorB

 final case class Config(values: List[AorB])

In config:

 config {
   values = [
     { A { a = 123 } },
     { B { b = cba } }
   ]
 }

Auto-derivation will work without importing pureconfig.generic.auto._ and without any other imports

You may use izumi.distage.config.codec.PureconfigAutoDerive f you want to use DIConfigReader's deriving strategy to derive a standalone pureconfig codec:

 final case class Abc(a: Duration, b: Regex, c: URL)

 object Abc {
   implicit val configReader: pureconfig.ConfigReader[Abc] =
     PureconfigAutoDerive[Abc]
 }

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Concise view

Value members

Concrete methods

final def decodeConfig(config: DistageConfigImpl): Try[A]
final def decodeConfig(path: String)(config: DistageConfigImpl)(implicit tag: Tag[A]): A
final def decodeConfigWithDefault(path: String)(default: => A)(config: DistageConfigImpl)(implicit tag: Tag[A]): A
final def flatMap[B](f: A => DIConfigReader[B]): DIConfigReader[B]
final def map[B](f: A => B): DIConfigReader[B]

Inherited methods

final def decodeAppConfig(path: String)(implicit tag: Tag[A]): AppConfig => A

Attributes

Inherited from:
AbstractDIConfigReader
final def decodeAppConfigWithDefault(path: String)(default: => A)(implicit tag: Tag[A]): AppConfig => A

Attributes

Inherited from:
AbstractDIConfigReader