Ciris Ciris

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