packages feed

profiterole-0.1: src/Config.hs

{-# LANGUAGE ViewPatterns #-}

module Config(emptyConfig, readConfig, Config(..)) where

import Data.List.Extra
import qualified Data.Map as Map
import System.IO.Extra
import Data.Functor
import Prelude


data Config = Root | Bury deriving Eq

readConfig :: FilePath -> IO (String -> Maybe Config)
readConfig file = do
    let f (stripPrefix "root: " -> Just x) = (x, Root)
        f (stripPrefix "bury: " -> Just x) = (x, Bury)
        f x = error $ "Bad config, got " ++ show x
    mp <- Map.fromList . map f .  lines <$> readFile' file
    return $ flip Map.lookup mp

emptyConfig :: String -> Maybe Config
emptyConfig _ = Nothing