module Config (setup, Config(..), ConfigFile.ServerConfig(..), ConfigFile.MUC(..)) where import Prelude () import BasicPrelude import Data.Time.Clock.POSIX (getPOSIXTime) import qualified Dhall import qualified Network.Protocol.XMPP as XMPP import qualified Database.SQLite.Simple as DB import qualified ConfigFile data Config = Config { componentJid :: XMPP.JID, server :: ConfigFile.ServerConfig, secret :: Text, nick :: Text, bridgeJid :: XMPP.JID, db :: DB.Connection, dbVersion :: Integer, mucs :: [[ConfigFile.MUC]] } -- Not importing Util because Util imports us s :: (IsString s) => String -> s s = fromString setup :: Text -> IO Config setup expr = do configFile <- Dhall.input Dhall.auto expr Just bridgeJid <- return $ XMPP.parseJID $ s"bridge@" ++ XMPP.formatJID (ConfigFile.componentJid configFile) ++ s"/bridge" db <- DB.open (textToString $ ConfigFile.db configFile) now <- getPOSIXTime return $ Config { componentJid = ConfigFile.componentJid configFile, server = ConfigFile.server configFile, secret = ConfigFile.secret configFile, nick = ConfigFile.nick configFile, bridgeJid = bridgeJid, db = db, dbVersion = ceiling now, mucs = ConfigFile.mucs configFile }