MyNixOS website logo
Description

derive typeclass instances for decoding types from HOCON conf.

confide

Build status

Confide port to Haskell (using GHC.Generics as opposed to Shapeless to generate FromConf typeclass instances). Uses deiko-config to parse HOCON .conf file and read in types

Usage

HOCON .conf file

a="hello"

b {
  y=true
  z {
    x=5
  }
}

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}

module Test where

import Data.Confide
import Data.Confide.Generic
import qualified Data.Text as T

data Foo = Foo {x :: Integer} deriving (Generic, Show)
data Bar = Bar {y :: Bool, z :: Foo} deriving (Generic, Show)
data Baz = Baz {a :: T.Text, b :: Bar} deriving (Generic, Show)

instance FromConf Foo
instance FromConf Bar
instance FromConf Baz

main :: IO ()
main = do
  c <- loadConfig "project/path/to/confFile.conf"
  baz <- get @Baz "" c
  print baz

GHCI

$ main 
Baz {a = "hello", b = Bar {y = True, z = Foo {x = 5}}}
Metadata

Version

0.1.0.3

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows