packages feed

arch-hs-0.16.1: plan/Plan/Trace.hs

module Plan.Trace (tracePlan, runPlanTrace) where

import Distribution.ArchHs.Internal.Prelude
import System.IO (Handle, hFlush, hPutStrLn)

tracePlan :: Member Trace r => String -> Sem r ()
tracePlan = trace . ("[plan] " <>)

runPlanTrace :: Member (Embed IO) r => Bool -> Handle -> Sem (Trace ': r) a -> Sem r a
runPlanTrace False _ = ignoreTrace
runPlanTrace True handle = interpret $ \case
  Trace message -> when ("[plan] " `isPrefixOf` message) $ embed $ do
    hPutStrLn handle message
    hFlush handle