/yaml-config

Configuration management with yaml

Primary LanguageHaskellMIT LicenseMIT

yaml-config Build Status

Load, parse and find fields in YAML config files.

Example

YAML config

server:
    port: 8080
    logs:
        access: /var/log/server/access.log
        error:  /var/log/server/error.log

Haskell source

{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}

module Main where
import Prelude hiding (lookup)
import Data.Word (Word16)
import Data.Yaml.Config (load, subconfig, lookupDefault, lookup)

main :: IO ()
main = do
    config <- load "./example.yaml"

    serverConfig <- subconfig "server" config
    let interface = lookupDefault "interface" "127.0.0.1" serverConfig
        port :: Word16 = lookupDefault "port" 80 serverConfig

    logConfig <- subconfig "logs" serverConfig
    accessLog <- lookup "access" logConfig
    errorLog <- lookup "error" logConfig

    mapM_ putStrLn [interface, (show port), errorLog, accessLog]

Result

$ ./server
127.0.0.1
8080
/var/log/server/error.log
/var/log/server/access.log

Links

Hackage