headroom-0.3.0.0: src/Headroom/Command/Utils.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-|
Module : Headroom.Command.Utils
Description : Shared code for individual command handlers
Copyright : (c) 2019-2020 Vaclav Svejcar
License : BSD-3-Clause
Maintainer : vaclav.svejcar@gmail.com
Stability : experimental
Portability : POSIX
Contains shared code common to all command handlers.
-}
module Headroom.Command.Utils
( bootstrap
)
where
import RIO
-- | Bootstraps /RIO/ application using provided environment data and flag
-- whether to run in debug mode.
bootstrap :: (LogFunc -> IO env)
-- ^ function returning environment data
-> Bool
-- ^ whether to run in debug mode
-> RIO env a
-- ^ /RIO/ application to execute
-> IO a
-- ^ execution result
bootstrap getEnv isDebug logic = do
logOptions <- logOptionsHandle stderr isDebug
let logOptions' = setLogUseLoc False logOptions
withLogFunc logOptions' $ \logFunc -> do
env <- liftIO $ getEnv logFunc
runRIO env logic