tricorder-0.7.0.0: src/Tricorder/Daemon/Ghci/Config.hs
module Tricorder.Daemon.Ghci.Config
( Config (..)
, display
)
where
import Atelier.Time (Second)
import Data.Default (Default (..))
import Data.Text qualified as T
import Tricorder.Session.Util (displayList, indent)
-- | Configuration for GHCi process management.
data Config = Config
{ startupTimeout :: Second
-- ^ How long to wait for the GHCi version banner on startup.
, shutdownTimeout :: Second
-- ^ How long to wait for the process to exit gracefully before force-killing.
, extraSetupCommands :: [Text]
-- ^ Additional GHCi commands to send after the fixed setup block.
-- Use this to inject session-wide options such as @:set -XOverloadedStrings@.
}
deriving stock (Eq)
instance Default Config where
def =
Config
{ startupTimeout = 60
, shutdownTimeout = 5
, extraSetupCommands = []
}
display :: Config -> Text
display config =
T.intercalate
"\n"
[ "Startup timeout: " <> show config.startupTimeout
, "Shutdown timeout: " <> show config.shutdownTimeout
, "Extra setup commands:"
, indent $ displayList id config.extraSetupCommands
]