{-# LANGUAGE OverloadedStrings #-}

module Data.Text.Extended where

import qualified Data.Text as T
import Niv.Logger
import System.Exit (exitFailure)
import UnliftIO

tshow :: Show a => a -> T.Text
tshow :: forall a. Show a => a -> Text
tshow = String -> Text
T.pack forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> String
show

-- not quite the perfect place for this
abort :: MonadIO io => T.Text -> io a
abort :: forall (io :: * -> *) a. MonadIO io => Text -> io a
abort Text
msg = do
  forall (io :: * -> *). MonadIO io => Text -> io ()
tsay forall a b. (a -> b) -> a -> b
$ [Text] -> Text
T.unwords [T
tbold forall a b. (a -> b) -> a -> b
$ T
tred Text
"FATAL:", Text
msg]
  forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a. IO a
exitFailure