    -- Copyright (c) 2004-6 Don Stewart - http://www.cse.unsw.edu.au/~dons
    -- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)

    module Lambdabot.Util.Process
        ( run
        ) where

    import System.Process

    run :: FilePath -> String -> (String -> String) -> IO String
    run binary src scrub = do
        (_,out,err) <- readProcessWithExitCode binary [] src
        let o = scrub out
            e = scrub err
        return $ case () of {_
            | null o && null e -> "Done."
            | null o           -> e
            | otherwise        -> o
        }