haskell-lsp-0.18.0.0: src/Language/Haskell/LSP/Capture.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Language.Haskell.LSP.Capture where
import Data.Aeson
import Data.ByteString.Lazy.Char8 as BSL
import Data.Time.Clock
import GHC.Generics
import Language.Haskell.LSP.Messages
data Event = FromClient UTCTime FromClientMessage
| FromServer UTCTime FromServerMessage
deriving (Show, Eq, Generic, ToJSON, FromJSON)
captureFromServer :: FromServerMessage -> Maybe FilePath -> IO ()
captureFromServer _ Nothing = return ()
captureFromServer msg (Just fp) = do
time <- getCurrentTime
let entry = FromServer time msg
BSL.appendFile fp $ BSL.append (encode entry) "\n"
captureFromClient :: FromClientMessage -> Maybe FilePath -> IO ()
captureFromClient _ Nothing = return ()
captureFromClient msg (Just fp) = do
time <- getCurrentTime
let entry = FromClient time msg
BSL.appendFile fp $ BSL.append (encode entry) "\n"