aboutsummaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs67
1 files changed, 12 insertions, 55 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 0aa2910..e3bd0ce 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -4,67 +4,24 @@ module Main
( main
) where
-import System.IO (stderr)
-
-import Data.Text (Text)
-import qualified Data.Text as T
import qualified Data.Text.IO as T
-import Date (getCurrentDate)
-import Birthdate (Birthdate, filterBirthdayAt)
-import BirthdateParser (parseBirthdates)
-import Mail (mailSubject, mailBody)
-import SendMail (sendMail)
-import Config
-
-birthdatePath :: FilePath
-birthdatePath = "birthdates.csv"
+import qualified RenderError
+import qualified Notification
-configPath :: FilePath
-configPath = "config.txt"
+import Model.Config
+import Model.BirthdateParser (parseBirthdates)
+import qualified Model.Path as Path
main :: IO ()
main = do
- eitherBirthdates <- parseBirthdates <$> T.readFile birthdatePath
- eitherConfig <- getConfig configPath
+ eitherBirthdates <- parseBirthdates <$> T.readFile Path.birthdate
+ eitherConfig <- getConfig Path.config
case (eitherBirthdates, eitherConfig) of
(Left err, _) ->
- birthdateError err
+ RenderError.birthdate err
(_, Left err) ->
- configError err
- (Right birthdates, Right config) ->
- sendNotificationForBirthdayToday birthdates config
-
-birthdateError :: Text -> IO ()
-birthdateError err =
- T.hPutStr stderr $
- T.concat
- [ "Error while parsing file "
- , T.pack birthdatePath
- , ":\n"
- , err
- ]
-
-configError :: Text -> IO ()
-configError err =
- T.hPutStr stderr $
- T.concat
- [ "Error while parsing config file "
- , T.pack configPath
- , ":\n"
- , err
- ]
-
-sendNotificationForBirthdayToday :: [Birthdate] -> Config -> IO ()
-sendNotificationForBirthdayToday birthdates config = do
- currentDate <- getCurrentDate
- let birthdays = filterBirthdayAt currentDate birthdates
- if not (null birthdays)
- then
- sendMail
- (mailTo config)
- (mailFrom config)
- (mailSubject birthdays)
- (mailBody currentDate birthdays)
- else
- return ()
+ RenderError.config err
+ (Right birthdates, Right config) -> do
+ Notification.today birthdates config
+ Notification.nextWeek birthdates config