--- /dev/null
+module Config ( Config(..)
+ , readConfig
+ ) where
+
+import Data.ConfigFile
+import Data.Either.Utils
+import Data.List.Split
+
+data Config = Config { rpcuser :: String
+ , rpcpassword :: String
+ , rpchost :: String
+ , rpcport :: Int
+ } deriving (Show)
+
+readConfig :: String -> IO Config
+readConfig f = do
+ cp <- return . forceEither =<< readfile emptyCP f
+ return (Config { rpcuser = getSetting cp "rpcuser" ""
+ , rpcpassword = getSetting cp "rpcpassword" ""
+ , rpchost = getSetting cp "rpchost" "localhost"
+ , rpcport = getSetting cp "rpcport" 8336
+ })
+ where
+ getSetting cp x dfl = case get cp "DEFAULT" x of
+ Left _ -> dfl
+ Right x -> x
+