buildbox-2.1.2.3: BuildBox/Build.hs
-- | Defines the main `Build` monad and common utils.
module BuildBox.Build
( module BuildBox.Build.Testable
, module BuildBox.Build.BuildState
, Build
-- * Building
, runBuild
, runBuildWithState
, runBuildPrint
, runBuildPrintWithState
, successfully
-- * Errors
, BuildError (..)
, throw
, catch
, needs
-- * Utils
, io
, whenM
-- * Output
, out
, outLn
, outBlank
, outLine
, outLINE
, logSystem)
where
import BuildBox.Build.Base
import BuildBox.Build.Testable
import BuildBox.Build.BuildState
import BuildBox.Build.BuildError
import Control.Monad.State
import System.IO
import Prelude hiding (catch)
-- | Log a system command to the handle in our `BuildConfig`, if any.
logSystem :: String -> Build ()
logSystem cmd
= do mHandle <- gets buildStateLogSystem
case mHandle of
Nothing -> return ()
Just handle
-> do io $ hPutStr handle "buildbox system: "
io $ hPutStrLn handle cmd
return ()