module IO.Config.General where

import ClassyPrelude

import Data.Ini.Config

import IO.Config.Parser (noEmpty)

data Config = Config
    { filename :: FilePath
    , debug    :: Bool
    }

defaultConfig :: Config
defaultConfig = Config {filename = "taskell.md", debug = False}

parser :: IniParser Config
parser =
    fromMaybe defaultConfig <$>
    sectionMb
        "general"
        (do filenameCf <-
                maybe (filename defaultConfig) unpack . (noEmpty =<<) <$> fieldMb "filename"
            debugCf <- fieldFlagDef "debug" False
            pure Config {filename = filenameCf, debug = debugCf})