deiko-config alternatives and similar packages
Based on the "Data" category.
Alternatively, view deiko-config alternatives based on common mentions on social networks and blogs.
-
streaming
An optimized general monad transformer for streaming applications, with a simple prelude of functions
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of deiko-config or a related project?
README
Small configuration library written in Haskell
Overview
Uses Typesafe-config's format: HOCON
HOCON stands for Human-Optimized Config Object Notation. It's basically a JSON superset
Here's an example:
# This is a comment
foo.bar = ${toto}
toto = false
rawString = """
This is a multi-
lines String
"""
another.string = "I'm a String"
one.more.string = one more string
nested {
list: [ one
, 1
, "both"]
homing = {
pass: { b: feez } { a: "Prop"}
}
another: [1,2,3] [4,5,6]
}
More information about the format can be found on Typesafe-config project page.
The library provides good error messages and comes with a bottom-up type inferencer in order to catch more configuration errors.
Here some use-cases:
1) foo = ["bar", { baz : 42 }]
You'll have:
foo:1:8-13: Expecting String but having Object
reason: List has only one inner type
2) foo = ["bar"] [{ baz : 42 }]
You'll have:
foo:1:7-14: Expecting List[String] but having List[Object]
reason: You can't merge Lists of different types
Example
{-# LANGUAGE OverloadedStrings #-}
import Data.Config
import Data.Text (Text)
data Foo = Foo { fooPort :: Int, fooAddr :: Text }
main :: IO ()
main = do
foo <- loadFooProps
withFoo foo
where
loadFooProps = do
config <- loadConfig "conf/baz.conf"
port <- getInteger "foo.port" config
addr <- getString "foo.addr" config
return (Foo port addr)
withFoo :: Foo -> IO ()
withFoo = ...