sarsi-0.0.4.0: src/Sarsi/Tools/Trace.hs
module Sarsi.Tools.Trace where
import Data.Machine ((<~), auto, runT_)
import Data.Attoparsec.Text (Parser)
import Data.Attoparsec.Text.Machine (streamParser)
import System.IO (Handle)
import System.IO.Machine (byLine, printer, sourceHandle)
import qualified Codec.GHC.Log as GHC
import qualified Codec.Sarsi.Rust as Rust
import qualified Codec.Sarsi.SBT as SBT
import qualified Data.Text as Text
traceHS :: Handle -> IO ()
traceHS = traceParser GHC.messageParser
traceRS :: Handle -> IO ()
traceRS = traceParser Rust.messageParser
traceSBT :: Handle -> IO ()
traceSBT = traceParser SBT.eventParser
traceParser :: Show a => Parser a -> Handle -> IO ()
traceParser parser h = do
runT_ $ printer <~ streamParser parser <~ appendCR <~ sourceHandle byLine h
where
appendCR = auto $ (`Text.snoc` '\n')