packages feed

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