packages feed

eventsourced-1.1.0.0: app/Main.hs

module Main where

import Control.Concurrent (forkIO, newEmptyMVar, takeMVar)
import Network.Eventsourced.Lib (application)
import Network.Eventsourced.Args (Options(..), getCommandLineOptions)

import System.Environment (getArgs)
import Network.Wai.Handler.Warp (run)

main :: IO ()
main = do
    args <- getArgs
    shutdownMVar <- newEmptyMVar
    let opts = getCommandLineOptions args
    case opts of
        Options _    _          (Just help)  -> putStrLn help
        Options port allowOrigin Nothing     -> do
            putStrLn $ "Streaming standard input to port " ++ (show port)
            putStrLn $ "Allowed orgins: " ++ allowOrigin
            let app = application shutdownMVar allowOrigin
            _ <- forkIO $ run port app
            takeMVar shutdownMVar