Overview
Ciris is a functional programming library for loading configurations.
In particular, the following features are supported.
- Loading values from multiple sources and defining default values.
- Composing multiple configuration values into larger configurations.
- Preventing secret values from being shown, redacting sensitive errors.
- Decoding configuration values to various commonly used types.
- Accumulating errors when multiple values cannot be loaded.
Documentation is kept up-to-date, currently documenting v3.7.0 on Scala 2.13.
Getting Started
To get started with sbt, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris" % "3.7.0"
Published for Scala 2.12, 2.13 and 3.3, Scala.js 1.17 and Scala Native 0.4.
For changes between versions, please refer to the release notes.
If you are using Scala.js or Scala Native, make sure to replace %%
with %%%
above.
For Scala 2.12, enable partial unification by adding the following line to build.sbt
.
scalacOptions += "-Ypartial-unification"
Modules
Following are additional provided modules.
Circe
For circe support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-circe" % "3.7.0"
Circe YAML
For circe-yaml support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-circe-yaml" % "3.7.0"
Enumeratum
For enumeratum support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-enumeratum" % "3.7.0"
Http4s
For http4s support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-http4s" % "3.7.0"
Refined
For refined support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-refined" % "3.7.0"
Squants
For squants support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-squants" % "3.7.0"
External Modules
Following is an incomplete list of third-party integrations.
ciris-aiven-kafka
ciris-aws-secretsmanager
ciris-aws-ssm
ciris-credstash
ciris-hocon
ciris-kubernetes
Signatures
Stable release artifacts are signed with the 3C73 EC3D A303 8ED3
key.
Compatibility
Backwards binary-compatibility for the library is guaranteed between minor and patch versions.
Version 3.a.b
is backwards binary-compatible with 3.c.d
for any a > c
or a = c
and b > d
.
Please note binary-compatibility is not guaranteed between milestone releases.
Snapshot Releases
To use the latest snapshot release, add the following lines to your build.sbt
file.
resolvers += Resolver.sonatypeRepo("snapshots")
libraryDependencies += "is.cir" %% "ciris" % "3.7.0+4-bd311a11-SNAPSHOT"
Dependencies
Refer to the table below for dependencies and version support across modules.
Module | Dependencies | Scala |
---|---|---|
ciris | Cats Effect 3.5.7 | Scala 2.12, 2.13 and 3.3 |
ciris-circe | Circe 0.14.8 | Scala 2.12, 2.13 and 3.3 |
ciris-circe-yaml | Circe YAML 0.15.2 | Scala 2.12, 2.13 and 3.3 |
ciris-enumeratum | Enumeratum 1.7.5 | Scala 2.12, 2.13 and 3.3 |
ciris-http4s | Http4s 0.23.30 | Scala 2.12, 2.13 and 3.3 |
ciris-refined | Refined 0.11.1 | Scala 2.12, 2.13 and 3.3 |
ciris-squants | Squants 1.8.3 | Scala 2.12, 2.13 and 3.3 |
For Scala.js and Scala Native version support, refer to the following table.
Module | Scala.js | Scala Native |
---|---|---|
ciris | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | Scala Native 0.4 (Scala 2.13 and 3.3) |
ciris-circe | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | Scala Native 0.4 (Scala 2.13 and 3.3) |
ciris-circe-yaml | - | - |
ciris-enumeratum | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | - |
ciris-http4s | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | Scala Native 0.4 (Scala 2.13 and 3.3) |
ciris-refined | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | Scala Native 0.4 (Scala 2.13 and 3.3) |
ciris-squants | Scala.js 1.17 (Scala 2.12, 2.13 and 3.3) | Scala Native 0.4 (Scala 2.13) |
Participation
Ciris embraces pure, typeful, idiomatic functional programming in Scala, and wants to provide a safe and friendly environment for teaching, learning, and contributing as described in the Scala Code of Conduct.
License
Licensed under the MIT license. Refer to the license file.