followup and display rsync exit status

This commit is contained in:
Joey Hess 2019-08-15 14:47:22 -04:00
parent 007892739d
commit 69cefe8190
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 88 additions and 9 deletions

View file

@ -103,7 +103,16 @@ rsyncUrlIsPath s
- The params must enable rsync's --progress mode for this to work.
-}
rsyncProgress :: OutputHandler -> MeterUpdate -> [CommandParam] -> IO Bool
rsyncProgress oh meter = commandMeter parseRsyncProgress oh meter "rsync" . rsyncParamsFixup
rsyncProgress oh meter ps =
commandMeter' parseRsyncProgress oh meter "rsync" (rsyncParamsFixup ps) >>= \case
Just ExitSuccess -> return True
Just (ExitFailure exitcode) -> do
when (exitcode /= 1) $
hPutStrLn stderr $ "rsync exited " ++ show exitcode
return False
Nothing -> do
hPutStrLn stderr $ "unable to run rsync"
return False
{- Strategy: Look for chunks prefixed with \r (rsync writes a \r before
- the first progress output, and each thereafter). The first number