add back debug logging
Make Utility.Process wrap the parts of System.Process that I use, and add debug logging to them. Also wrote some higher-level code that allows running an action with handles to a processes stdin or stdout (or both), and checking its exit status, all in a single function call. As a bonus, the debug logging now indicates whether the process is being run to read from it, feed it data, chat with it (writing and reading), or just call it for its side effect.
This commit is contained in:
parent
549f861999
commit
1db7d27a45
17 changed files with 251 additions and 126 deletions
13
Git/Queue.hs
13
Git/Queue.hs
|
@ -19,7 +19,6 @@ module Git.Queue (
|
|||
|
||||
import qualified Data.Map as M
|
||||
import System.IO
|
||||
import System.Process
|
||||
import Data.String.Utils
|
||||
|
||||
import Utility.SafeCommand
|
||||
|
@ -148,13 +147,11 @@ runAction :: Repo -> Action -> IO ()
|
|||
runAction repo (UpdateIndexAction streamers) =
|
||||
-- list is stored in reverse order
|
||||
Git.UpdateIndex.streamUpdateIndex repo $ reverse streamers
|
||||
runAction repo action@(CommandAction {}) = do
|
||||
(Just h, _, _, pid) <- createProcess (proc "xargs" params)
|
||||
{ std_in = CreatePipe }
|
||||
fileEncoding h
|
||||
hPutStr h $ join "\0" $ getFiles action
|
||||
hClose h
|
||||
forceSuccessProcess pid "xargs" params
|
||||
runAction repo action@(CommandAction {}) =
|
||||
withHandle StdinHandle createProcessSuccess (proc "xargs" params) $ \h -> do
|
||||
fileEncoding h
|
||||
hPutStr h $ join "\0" $ getFiles action
|
||||
hClose h
|
||||
where
|
||||
params = "-0":"git":baseparams
|
||||
baseparams = toCommand $ gitCommandLine
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue