enumeratum
The ciris-enumeratum module provides ConfigDecoders for enumeratum enumerations.
Getting Started
To get started with sbt, add the following line to your build.sbt file.
libraryDependencies += "is.cir" %% "ciris-enumeratum" % "3.15.2"
If you are using Scala.js or Scala Native, make sure to replace %% with %%% above.
Usage
For regular Enums, also mix in CirisEnum to derive a ConfigDecoder instance.
import ciris.env
import enumeratum.{CirisEnum, Enum, EnumEntry}
import enumeratum.EnumEntry.Lowercase
sealed trait Suit extends EnumEntry with Lowercase
object Suit extends Enum[Suit] with CirisEnum[Suit] {
case object Clubs extends Suit
case object Diamonds extends Suit
case object Hearts extends Suit
case object Spades extends Suit
val values = findValues
}
env("SUIT").as[Suit]
// res1: ciris.ConfigValue[ciris.package.Effect, Suit] = ConfigValue$174677250
For ValueEnums, also mix in the matching CirisValueEnum to derive a ConfigDecoder instance.
import ciris.env
import enumeratum.values.{StringCirisEnum, StringEnum, StringEnumEntry}
sealed abstract class Color(val value: String) extends StringEnumEntry
object Color extends StringEnum[Color] with StringCirisEnum[Color] {
case object Red extends Color("red")
case object Green extends Color("green")
case object Blue extends Color("blue")
val values = findValues
}
env("COLOR").as[Color]
// res3: ciris.ConfigValue[ciris.package.Effect, Color] = ConfigValue$274226363