diff options
| author | LLLL Colonq <llll@colonq> | 2024-04-19 02:08:00 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2024-04-19 02:08:00 -0400 |
| commit | 432ff585d9fa0aafcf898a2e8e8be2d5b4524874 (patch) | |
| tree | 0518eab5945ade61fefae3fc5843b3e7f5647834 /fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord | |
| parent | 9d875ab8fb539246e3aea0aae58d2c9f227c8276 (diff) | |
Multi-bridge functionality
Diffstat (limited to 'fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord')
| -rw-r--r-- | fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord/Utils.hs | 29 |
1 files changed, 29 insertions, 0 deletions
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 |
