headroom-0.2.2.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