Skip to content

Commit

Permalink
FORAMT!
Browse files Browse the repository at this point in the history
  • Loading branch information
Jassob committed Sep 27, 2023
1 parent ec3acd6 commit 274f555
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 41 deletions.
75 changes: 38 additions & 37 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

module Main
( main
)
where
) where

import Control.Concurrent ( MVar
, newMVar
, threadDelay
, tryPutMVar
)
import qualified Control.Concurrent.Async as Async
import qualified Control.Concurrent.Async as Async
import Control.Monad ( forever )
import Control.Monad.Log ( defaultBatchingOptions
, renderWithTimestamp
Expand Down Expand Up @@ -56,8 +55,8 @@ import View ( render )

opts :: [OptDescr (Config -> Config)]
opts =
[ Option [] ["help"] (NoArg (set cHelp True)) "Show usage info"
, Option [] ["port"] (ReqArg (set cPort . read) "PORT") "Port to run on"
[ Option [] ["help"] (NoArg (set cHelp True)) "Show usage info"
, Option [] ["port"] (ReqArg (set cPort . read) "PORT") "Port to run on"
, Option []
["interval"]
(ReqArg (set cInterval . (1000000 *) . read) "INTERVAL (s)")
Expand All @@ -68,41 +67,43 @@ usage :: IO ()
usage = putStrLn $ usageInfo "mat-chalmers [OPTION...]" opts

main :: IO ()
main =
(reifyConfig . getOpt Permute opts <$> getArgs)
>>= \case
(_ , _ , _ : _) -> usage
(_ , _ : _, _ ) -> usage
(Config{_cHelp=True}, _ , _ ) -> usage
(config , _ , _ ) -> do
upd <- newMVar () -- putMVar when to update
mgr <- newTlsManager
(viewRef, refreshAction) <- runLoggingT
(runReaderT refresh (ClientContext config mgr))
print
main = (reifyConfig . getOpt Permute opts <$> getArgs) >>= \case
(_ , _ , _ : _) -> usage
(_ , _ : _, _ ) -> usage
(Config { _cHelp = True }, _ , _ ) -> usage
(config , _ , _ ) -> do
upd <- newMVar () -- putMVar when to update
mgr <- newTlsManager
(viewRef, refreshAction) <- runLoggingT
(runReaderT refresh (ClientContext config mgr))
print

-- In the list there are three items running concurrently:
-- 1. Timer that sends a signal to the updater when it's time to update
-- 2. Webserver that serves the menus to the user
-- 3. Updater that fetches new data from the restaurants
Async.runConcurrently $ traverse_ Async.Concurrently
[ timer upd config
, webserver config viewRef upd
, updater mgr upd refreshAction config
]
-- In the list there are three items running concurrently:
-- 1. Timer that sends a signal to the updater when it's time to update
-- 2. Webserver that serves the menus to the user
-- 3. Updater that fetches new data from the restaurants
Async.runConcurrently $ traverse_
Async.Concurrently
[ timer upd config
, webserver config viewRef upd
, updater mgr upd refreshAction config
]
where
timer upd cfg = forever $ tryPutMVar upd () >> threadDelay (view cInterval cfg)
timer upd cfg =
forever $ tryPutMVar upd () >> threadDelay (view cInterval cfg)

updater mgr upd refreshAction cfg =
forever
$ withFDHandler defaultBatchingOptions stdout 1.0 80
$ \logCallback ->
runLoggingT
(runReaderT (refreshAction upd) (ClientContext cfg mgr))
(logCallback . renderWithTimestamp
(formatTime defaultTimeLocale (iso8601DateFormat (Just "%H:%M:%S")))
id
)
updater mgr upd refreshAction cfg =
forever
$ withFDHandler defaultBatchingOptions stdout 1.0 80
$ \logCallback -> runLoggingT
(runReaderT (refreshAction upd) (ClientContext cfg mgr))
( logCallback
. renderWithTimestamp
(formatTime defaultTimeLocale
(iso8601DateFormat (Just "%H:%M:%S"))
)
id
)

webserver
:: Config
Expand Down
8 changes: 4 additions & 4 deletions src/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ data Config = Config
, _cNextDayHour :: !Int
, _cInterval :: !Int
, _cPort :: !Int
} deriving (Eq, Show)
}
deriving (Eq, Show)

makeLenses ''Config

Expand All @@ -29,6 +30,5 @@ defaultConfig = Config False 14 (1000000 * 60 * 30) 5007
--
-- TODO: Feel free to bikeshed the function name.
reifyConfig
:: ([Config -> Config], [String], [String])
-> (Config, [String], [String])
reifyConfig = (& _1 %~ foldl' (flip id) defaultConfig)
:: ([Config -> Config], [String], [String]) -> (Config, [String], [String])
reifyConfig = (& _1 %~ foldl' (flip id) defaultConfig)

0 comments on commit 274f555

Please sign in to comment.