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 v2.3.3 on Scala 2.13.
Getting Started
To get started with sbt, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris" % "2.3.3"
Published for Scala 2.12, 2.13 and 3.1. For changes, refer to the release notes.
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" % "2.3.3"
Circe YAML
For circe-yaml support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-circe-yaml" % "2.3.3"
Enumeratum
For enumeratum support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-enumeratum" % "2.3.3"
Http4s
For http4s support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-http4s" % "2.3.3"
Refined
For refined support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-refined" % "2.3.3"
Squants
For squants support, add the following line to your build.sbt
file.
libraryDependencies += "is.cir" %% "ciris-squants" % "2.3.3"
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 2.a.b
is backwards binary-compatible with 2.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" % "2.3.3+2-dcc553a2-SNAPSHOT"
Dependencies
Refer to the table below for dependencies and version support across modules.
Module | Dependencies | Scala |
---|---|---|
ciris | Cats Effect 3.3.14 | Scala 2.12, 2.13 and 3.1 |
ciris-circe | Circe 0.14.2 | Scala 2.12, 2.13 and 3.1 |
ciris-circe-yaml | Circe YAML 0.14.1 | Scala 2.12, 2.13 and 3.1 |
ciris-enumeratum | Enumeratum 1.7.0, TypeName 1.0.0 | Scala 2.12 and 2.13 |
ciris-http4s | Http4s 0.23.13 | Scala 2.12, 2.13 and 3.1 |
ciris-refined | Refined 0.10.1, TypeName 1.0.0 | Scala 2.12, 2.13 and 3.1 |
ciris-squants | Squants 1.8.3 | Scala 2.12, 2.13 and 3.1 |
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.