add a progress callback to storeKey, and threaded it all the way through

Transfer info files are updated when the callback is called, updating
the number of bytes transferred.

Left unused p variables at every place the callback should be used.
Which is rather a lot..
This commit is contained in:
Joey Hess 2012-09-19 16:08:37 -04:00
parent 3c81d70c1b
commit aff09a1f33
14 changed files with 75 additions and 59 deletions

View file

@ -12,6 +12,7 @@ import Command
import Annex.Content
import Utility.Rsync
import Logs.Transfer
import Types.Remote
import qualified Fields
def :: [Command]
@ -23,7 +24,7 @@ seek = [withKeys start]
start :: Key -> CommandStart
start key = ifM (inAnnex key)
( fieldTransfer Upload key $ do
( fieldTransfer Upload key $ \p -> do
file <- inRepo $ gitAnnexLocation key
liftIO $ rsyncServerSend file
, do
@ -31,10 +32,11 @@ start key = ifM (inAnnex key)
liftIO exitFailure
)
fieldTransfer :: Direction -> Key -> Annex Bool -> CommandStart
fieldTransfer :: Direction -> Key -> (ProgressCallback -> Annex Bool) -> CommandStart
fieldTransfer direction key a = do
afile <- Fields.getField Fields.associatedFile
ok <- maybe a (\u -> runTransfer (Transfer direction (toUUID u) key) afile a)
ok <- maybe (a $ const noop)
(\u -> runTransfer (Transfer direction (toUUID u) key) afile a)
=<< Fields.getField Fields.remoteUUID
if ok
then liftIO exitSuccess