{- Config.hs: ShareGuard configuration file parsing Copyright (C) 2011 Clint Adams This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -} module Config ( getConfig, database, rootdir, Config(..) ) where import Data.ConfigFile import Control.Monad.Error import System.Exit import Data.Either.Utils data Config = Config { cdb :: String , crd :: String } deriving(Show) database :: Config -> String database x = cdb x rootdir :: Config -> String rootdir x = crd x getConfig :: FilePath -> IO Config getConfig file = do rv <- runErrorT $ do cp <- join $ liftIO $ readfile emptyCP file db <- get cp "DEFAULT" "database" rd <- get cp "DEFAULT" "rootdir" let cnf = Config { cdb = db, crd = rd } return cnf return $ forceEither rv