packages feed

barrie-0.4: src/Barrie/Trace.hs

--  Module for enabling trace

module Barrie.Trace (enableTrace, traceMessage) where

import Data.IORef
import System.IO.Unsafe

traceFile :: IORef (Maybe String)
traceFile = unsafePerformIO $ newIORef Nothing

enableTrace :: String -> IO ()
enableTrace fileName = do
  writeIORef traceFile (Just fileName)

traceMessage :: String -> IO ()
traceMessage msg = do
  fileName <- readIORef traceFile
  case fileName of
     Nothing -> return ()
     Just name -> appendFile name (msg ++ "\n")