@@ -13,6 +13,7 @@ module Gen.IO where
1313
1414import Control.Error
1515import Control.Monad.Except
16+import Data.Bifunctor (first)
1617import Data.ByteString (ByteString)
1718import qualified Data.Text.Lazy as LText
1819import Data.Text.Lazy.Builder (toLazyText)
@@ -23,12 +24,13 @@ import Gen.Formatting
2324import Gen.Types
2425import System.IO
2526import qualified Text.EDE as EDE
27+import UnexceptionalIO (Unexceptional, fromIO, runUIO)
2628
2729run :: ExceptT Error IO a -> IO a
2830run = runScript . fmapLT LText.unpack
2931
3032io :: MonadIO m => IO a -> ExceptT Error m a
31−io = fmapLT (LText.pack . show) . syncIO
33+io = ExceptT . fmap (first (LText.pack . show)) . liftIO . runUIO . fromIO
3234
3335title :: MonadIO m => Format (ExceptT Error m ()) a -> a
3436title m = runFormat m (io . LText.putStrLn . toLazyText)