cabal-cache-0.2.0.2: src/HaskellWorks/Ci/Assist/IO/Error.hs
{-# LANGUAGE FlexibleContexts #-}
module HaskellWorks.Ci.Assist.IO.Error
( exceptFatal
, exceptWarn
) where
import Control.Monad.Except
import Control.Monad.IO.Class
import qualified Data.Text as T
import qualified HaskellWorks.Ci.Assist.IO.Console as CIO
import qualified System.Exit as IO
import qualified System.IO as IO
exceptFatal :: MonadIO m => String -> ExceptT String m a -> ExceptT String m a
exceptFatal message f = catchError f handler
where handler e = do
liftIO . CIO.hPutStrLn IO.stderr . T.pack $ "Fatal Error: " <> e
liftIO IO.exitFailure
throwError e
exceptWarn :: MonadIO m => String -> ExceptT String m a -> ExceptT String m a
exceptWarn message f = catchError f handler
where handler e = do
liftIO . CIO.hPutStrLn IO.stderr . T.pack $ "Warning: " <> e
throwError e