grapesy-1.0.0: interop/Main.hs
module Main (main) where
import GHC.Conc (setUncaughtExceptionHandler)
import System.IO
import Interop.Client (runInteropClient)
import Interop.Client.Ping (ping)
import Interop.Cmdline
import Interop.SelfTest (selfTest)
import Interop.Server (runInteropServer)
{-------------------------------------------------------------------------------
Top-level application driver
-------------------------------------------------------------------------------}
main :: IO ()
main = do
setUncaughtExceptionHandler $ \err -> do
hPutStrLn stderr $ "Uncaught exception: " ++ show err
hFlush stderr
-- Ensure we see server output when running inside docker
hSetBuffering stdout NoBuffering
hSetBuffering stderr NoBuffering
cmdline <- getCmdline
case cmdMode cmdline of
Server -> runInteropServer cmdline
Client -> runInteropClient cmdline
Ping -> ping cmdline
SelfTest -> selfTest cmdline