{-# 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