module System.Process.Extras
( ListLikeProcessIO(forceOutput)
, readCreateProcessWithExitCode
, readProcessWithExitCode
, showCreateProcessForUser
, showCmdSpecForUser
) where
import Control.DeepSeq (force)
import qualified Control.Exception as C (evaluate)
import System.Process (CmdSpec(..), CreateProcess(..), showCommandForUser)
import System.Process.ByteString ()
import System.Process.ByteString.Lazy ()
import System.Process.ListLike (ListLikeProcessIO(forceOutput), readCreateProcessWithExitCode, readProcessWithExitCode)
import System.Process.Text ()
import System.Process.Text.Lazy ()
showCreateProcessForUser :: CreateProcess -> String
showCreateProcessForUser p =
showCmdSpecForUser (cmdspec p) ++ maybe "" (\ d -> " (in " ++ d ++ ")") (cwd p)
showCmdSpecForUser :: CmdSpec -> String
showCmdSpecForUser (ShellCommand s) = s
showCmdSpecForUser (RawCommand p args) = showCommandForUser p args
instance ListLikeProcessIO String Char where
forceOutput = C.evaluate . force