From 432ff585d9fa0aafcf898a2e8e8be2d5b4524874 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 19 Apr 2024 02:08:00 -0400 Subject: Multi-bridge functionality --- .../src/Fig/Bridge/IRCDiscord/Utils.hs | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord/Utils.hs (limited to 'fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord') diff --git a/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord/Utils.hs b/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord/Utils.hs new file mode 100644 index 0000000..00d227d --- /dev/null +++ b/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord/Utils.hs @@ -0,0 +1,29 @@ +{-# Language ApplicativeDo #-} + +module Fig.Bridge.IRCDiscord.Utils + ( FigBridgeIRCDiscordException(..) + , Config(..) + , loadConfig + ) where + +import Fig.Prelude + +import qualified Toml + +newtype FigBridgeIRCDiscordException = FigBridgeIRCDiscordException Text + deriving (Show, Eq, Ord) +instance Exception FigBridgeIRCDiscordException + +newtype Config = Config + { mapping :: [(Int, Text)] + } deriving (Show, Eq, Ord) + +configCodec :: Toml.TomlCodec Config +configCodec = do + mapping <- Toml.list (Toml.pair (Toml.int "discord") (Toml.text "irc")) "mapping" Toml..= (\a -> a.mapping) + pure $ Config{..} + +loadConfig :: FilePath -> IO Config +loadConfig path = Toml.decodeFileEither configCodec path >>= \case + Left err -> throwM . FigBridgeIRCDiscordException $ tshow err + Right config -> pure config -- cgit v1.2.3