Safe Haskell | None |
---|---|
Language | Haskell98 |
Getting started
Dynamic reconfiguration
This program is dynamically configured using the dyre library.
You may want to check out this documentation to know how to get started.
Your personal configuration is located at $XDG_CONFIG_HOME/imm/imm.hs
.
ReaderT
pattern
The behavior of this program can be customized through the ReaderT
pattern.
- imm :: ModulesM IO -> IO ()
- data Modules httpClient databaseClient logger hooks xmlParser = Modules {
- _httpClient :: httpClient
- _databaseClient :: databaseClient
- _logger :: logger
- _hooks :: hooks
- _xmlParser :: xmlParser
- data ModulesM m
- mkModulesM :: (MonadXmlParser (ReaderT e m), MonadImm (ReaderT d m), MonadLog (ReaderT c m), MonadDatabase FeedTable (ReaderT b m), MonadHttpClient (ReaderT a m)) => a -> b -> c -> d -> e -> ModulesM m
Documentation
imm :: ModulesM IO -> IO () Source #
Main function, meant to be used in your personal configuration file.
Here is an example:
import Imm.Boot import Imm.Database.JsonFile import Imm.Feed import Imm.Hooks.SendMail import Imm.HTTP.Conduit import Imm.Logger.Simple import Imm.XML.Simple main :: IO () main = do logger <- defaultLogger manager <- defaultManager database <- defaultDatabase imm $ mkModulesM manager database logger sendmail defaultXmlParser sendmail :: SendMailSettings sendmail = SendMailSettings smtpServer formatMail formatMail :: FormatMail formatMail = FormatMail (\a b -> (defaultFormatFrom a b) { addressEmail = "user@host" } ) defaultFormatSubject defaultFormatBody (\_ _ -> [Address Nothing "user@host"]) smtpServer :: Feed -> FeedElement -> SMTPServer smtpServer _ _ = SMTPServer (Just $ Authentication PLAIN "user" "password") (StartTls "smtp.host" defaultSettingsSMTPSTARTTLS)
data Modules httpClient databaseClient logger hooks xmlParser Source #
Modules are independent features of the program which behavior can be controlled by the user.
Modules | |
|
(MonadThrow m, MonadDatabase FeedTable (ReaderT * b m)) => MonadDatabase FeedTable (ReaderT * (Modules a b c d e) m) Source # | |
(MonadIO m, MonadLog (ReaderT * c m)) => MonadLog (ReaderT * (Modules a b c d e) m) Source # | |
(MonadThrow m, MonadHttpClient (ReaderT * a m)) => MonadHttpClient (ReaderT * (Modules a b c d e) m) Source # | |
(Monad m, MonadImm (ReaderT * d m)) => MonadImm (ReaderT * (Modules a b c d e) m) Source # | |
(MonadThrow m, MonadXmlParser (ReaderT * e m)) => MonadXmlParser (ReaderT * (Modules a b c d e) m) Source # | |
mkModulesM :: (MonadXmlParser (ReaderT e m), MonadImm (ReaderT d m), MonadLog (ReaderT c m), MonadDatabase FeedTable (ReaderT b m), MonadHttpClient (ReaderT a m)) => a -> b -> c -> d -> e -> ModulesM m Source #
Constructor for ModulesM
.