cpkg-0.1.0.0: src/System/Process/Ext.hs
module System.Process.Ext ( waitProcess
) where
import Control.Monad.Reader (ask)
import CPkgPrelude
import Package.C.Monad
import Package.C.Type.Verbosity
import System.Exit (ExitCode (ExitSuccess), exitWith)
import System.Process
handleExit :: ExitCode -> IO ()
handleExit ExitSuccess = mempty
handleExit x = exitWith x
verbosityErr :: Verbosity -> StdStream
verbosityErr v | v >= Verbose = Inherit
verbosityErr _ = CreatePipe
waitProcess :: CreateProcess -> PkgM ()
waitProcess proc' = do
v <- ask
if v >= Loud
then do
(_, _, _, r) <- liftIO $ createProcess (proc' { std_out = Inherit, std_err = Inherit })
liftIO (handleExit =<< waitForProcess r)
else void $ liftIO $ readCreateProcess (proc' { std_err = verbosityErr v }) mempty