packages feed

chakra-0.1.0: src/Chakra/Config.hs

-- |Config utility module, uses System.Envy to read ENV values and builds a data
module Chakra.Config where

import qualified System.Envy as Envy
import System.IO (hPutStrLn, stderr)

-- | Read from ENVIRONMENT Variables and return your target `t` data
-- `t` should have a instance of FromEnv
-- Example: 
-- @ 
--    instance FromEnv MyAppSettings
-- @
withAppSettingsFromEnv :: Envy.FromEnv t => (t -> IO ()) -> IO ()
withAppSettingsFromEnv f = Envy.decodeEnv >>= callF
  where
    callF x =
      case x of
        Left e -> hPutStrLn stderr ("Error reading env: " ++ e)
        Right c -> f c