animascii-0.1.0.0: src/Config.hs
{-# Language OverloadedStrings #-}
module Config where
import Data.Ini.Config
import Data.Text.IO as TI
type Colour = String
data Config = Config { cFPS :: Integer,
cIDir :: FilePath,
cODir :: FilePath,
cGif :: Bool,
cSerial :: Bool,
-- fg, bg
cColours :: (Colour, Colour) }
deriving (Show)
configParser :: IniParser Config
configParser = do
fps <- section "general" $ do
i <- fieldOf "fps" number
return i
(idir, odir) <- section "directory" $ do
i <- fieldOf "input" string
o <- fieldOf "output" string
return (i, o)
(bgif, bser) <- section "render" $ do
g <- fieldOf "gif" flag
s <- fieldOf "serial" flag
return (g, s)
(fgcol, bgcol) <- section "gif" $ do
f <- fieldOf "fgcol" string
b <- fieldOf "bgcol" string
return (f, b)
return (Config fps idir odir bgif bser (fgcol, bgcol))
getConfig :: IO Config
getConfig = TI.readFile "config.ini" >>= \t ->
let ec = parseIniFile t configParser in
case ec of
Left e -> error ("error in ini: " ++ e)
Right c -> return c