selectel / yaml-config

Configuration management with YAML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Configuration management with YAML

License:MIT License


Languages

Language:Haskell 100.0%