{- Running processes in the foreground, not via the concurrent-output - layer. - - Avoid using this in propellor properties! - - Copyright 2016 Joey Hess - - License: BSD-2-clause -} {-# OPTIONS_GHC -fno-warn-tabs #-} module Utility.Process.NonConcurrent where import System.Process import System.Exit import System.IO import Utility.SafeCommand import Control.Applicative import Prelude boolSystemNonConcurrent :: String -> [CommandParam] -> IO Bool boolSystemNonConcurrent cmd params = do (Nothing, Nothing, Nothing, p) <- createProcessNonConcurrent $ proc cmd (toCommand params) dispatch <$> waitForProcessNonConcurrent p where dispatch ExitSuccess = True dispatch _ = False createProcessNonConcurrent :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) createProcessNonConcurrent = createProcess waitForProcessNonConcurrent :: ProcessHandle -> IO ExitCode waitForProcessNonConcurrent = waitForProcess