module OpenTelemetry.Debug where import Control.Concurrent.STM import Control.Monad.IO.Class import System.Environment import System.IO import System.IO.Unsafe dd_ :: Show a => String -> a -> IO () dd_ = unsafePerformIO $ lookupEnv "OPENTELEMETRY_DEBUG" >>= \case Nothing -> pure $ \_ _ -> pure () Just "0" -> pure $ \_ _ -> pure () Just "false" -> pure $ \_ _ -> pure () _ -> pure $ \s thing -> liftIO $ do hPutStr stderr (s <> ": ") hPutStrLn stderr (show thing) {-# NOINLINE dd_ #-} d_ :: String -> IO () d_ = unsafePerformIO $ lookupEnv "OPENTELEMETRY_DEBUG" >>= \case Nothing -> pure $ \_ -> pure () Just "0" -> pure $ \_ -> pure () Just "false" -> pure $ \_ -> pure () _ -> pure $ \s -> liftIO $ do hPutStrLn stderr s {-# NOINLINE d_ #-} inc :: Int -> TVar Int -> IO () inc amount counterVar = atomically $ modifyTVar counterVar (+ amount)