on master help sign in
cliapp: Code review changes
e7e741fElliot Cameron
lib/cliapp/src/Obelisk/CliApp/Process.hs+6−4
@@ -220,9 +220,11 @@ withProcess process f =
220 (\x -> x { std_out = CreatePipe , std_err = CreatePipe }) process
220 (\x -> x { std_out = CreatePipe , std_err = CreatePipe }) process
221 )
221 )
222 (liftIO . Process.cleanupProcess)
222 (liftIO . Process.cleanupProcess)
223+ (\case
223− (\(_, Just out, Just err, p) -> do
224+ (_, Just out, Just err, p) -> do
224− f out err -- Pass the handles to the passed function
225+ f out err
225− (out, err) <$ (exitCodeToException process =<< waitForProcess p)
226+ (out, err) <$ (exitCodeToException process =<< waitForProcess p)
227+ _ -> error "withProcess: createProcess did not provide handles for CreatePipe as expected"
226 )
228 )
227
229
228-- | Runs a process to completion failing if it does not exit cleanly.
230-- | Runs a process to completion failing if it does not exit cleanly.
@@ -230,7 +232,7 @@ runProcess_
230 :: (MonadIO m, CliLog m, CliThrow e m, MonadMask m, AsProcessFailure e, MonadFail m)
232 :: (MonadIO m, CliLog m, CliThrow e m, MonadMask m, AsProcessFailure e, MonadFail m)
231 => ProcessSpec -> m ()
233 => ProcessSpec -> m ()
232runProcess_ process =
234runProcess_ process =
233− bracketOnError -- TODO: Wrap exceptions up in ProcessFailure
235+ bracketOnError
234 (createProcess process)
236 (createProcess process)
235 (liftIO . Process.cleanupProcess)
237 (liftIO . Process.cleanupProcess)
236 (\(_, _, _, ph) -> exitCodeToException process =<< waitForProcess ph)
238 (\(_, _, _, ph) -> exitCodeToException process =<< waitForProcess ph)