make --json-progress update meter when getting from git remote with rsync

This commit is contained in:
Joey Hess 2016-09-09 16:05:45 -04:00
parent a108235565
commit 312ef4dfae
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
2 changed files with 13 additions and 9 deletions

View file

@ -74,13 +74,17 @@ metered othermeter key a = case keySize key of
Nothing -> m
Just om -> combineMeterUpdate m om
{- Use when the progress meter is only desired for concurrent
- output; as when a command's own progress output is preferred. -}
concurrentMetered :: Maybe MeterUpdate -> Key -> (MeterUpdate -> Annex a) -> Annex a
concurrentMetered combinemeterupdate key a =
withMessageState $ \s -> if concurrentOutputEnabled s
then metered combinemeterupdate key a
else a (fromMaybe nullMeterUpdate combinemeterupdate)
{- Use when the command's own progress output is preferred.
- The command's output will be suppressed and git-annex's progress output
- used for concurrent output, and json progress. -}
commandMetered :: Maybe MeterUpdate -> Key -> (MeterUpdate -> Annex a) -> Annex a
commandMetered combinemeterupdate key a =
withMessageState $ \s -> case outputType s of
JSONOutput True -> usemeter
NormalOutput | concurrentOutputEnabled s -> usemeter
_ -> a (fromMaybe nullMeterUpdate combinemeterupdate)
where
usemeter = metered combinemeterupdate key a
{- Poll file size to display meter, but only for concurrent output. -}
concurrentMeteredFile :: FilePath -> Maybe MeterUpdate -> Key -> Annex a -> Annex a

View file

@ -421,7 +421,7 @@ copyFromRemote :: Remote -> Key -> AssociatedFile -> FilePath -> MeterUpdate ->
copyFromRemote r key file dest p
| Git.repoIsHttp (repo r) = unVerified $
Annex.Content.downloadUrl key p (keyUrls r key) dest
| otherwise = concurrentMetered (Just p) key $
| otherwise = commandMetered (Just p) key $
copyFromRemote' r key file dest
copyFromRemote' :: Remote -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex (Bool, Verification)
@ -531,7 +531,7 @@ copyFromRemoteCheap _ _ _ _ = return False
{- Tries to copy a key's content to a remote's annex. -}
copyToRemote :: Remote -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool
copyToRemote r key file meterupdate =
concurrentMetered (Just meterupdate) key $
commandMetered (Just meterupdate) key $
copyToRemote' r key file
copyToRemote' :: Remote -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool