module Util(cmd, cmdCode, cmdOut, cmdCodeOutErr) where import Control.Monad import System.Exit import System.IO.Extra import System.Cmd cmdCodeOutErr :: String -> IO (ExitCode, String, String) cmdCodeOutErr x = withTempFile $ \stderr -> withTempFile $ \stdout -> do res <- system $ x ++ " > " ++ stdout ++ " 2> " ++ stderr err <- readFile' stderr out <- readFile' stdout return (res,out,err) cmdOut :: String -> IO String cmdOut x = withTempFile $ \stdout -> do res <- system $ x ++ " > " ++ stdout out <- readFile' stdout when (res /= ExitSuccess) $ error $ "Failed in system command: " ++ x return out cmdCode :: String -> IO ExitCode cmdCode = system cmd :: String -> IO () cmd x = do res <- system x when (res /= ExitSuccess) $ error $ "Failed in system command: " ++ x