module System.IO.Extra' (
panicWith, panic, exitFast,
) where
import Control.Monad.IO.Class
import Control.Monad.Logger
import Data.Text (pack)
import System.Exit
panicWith :: (MonadIO m, MonadLogger m) => String -> Int -> m a
panicWith error code = $(logError) (pack error) >> exitFast code
panic :: (MonadIO m, MonadLogger m) => String -> m a
panic error = panicWith error 128
exitFast :: (MonadIO m) => Int -> m a
exitFast 0 = liftIO exitSuccess
exitFast code = liftIO $ exitWith (ExitFailure code)