From 7b9701675e284ba9d6f4b5e0a0487647f4e575bc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 31 Jan 2019 13:34:12 -0400 Subject: [PATCH] Display progress bar when getting files from export remotes And moved the progress bar display into storeExport as well. This commit was sponsored by John Pellman on Patreon. --- CHANGELOG | 1 + Command/Export.hs | 9 +++------ Remote/Helper/Special.hs | 10 +++++++++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index c8625b119f..1f3481b20b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ git-annex (7.20190130) UNRELEASED; urgency=medium This allows downloads of files that were exported to such a remote before versioning was enabled on it. * Improved speed of S3 remote by only loading S3 creds once. + * Display progress bar when getting files from export remotes. -- Joey Hess Wed, 30 Jan 2019 12:30:22 -0400 diff --git a/Command/Export.hs b/Command/Export.hs index c6db3daeab..d805c5e835 100644 --- a/Command/Export.hs +++ b/Command/Export.hs @@ -28,7 +28,6 @@ import Annex.LockFile import Logs.Location import Logs.Export import Database.Export -import Messages.Progress import Config import Utility.Tmp import Utility.Metered @@ -233,20 +232,18 @@ performExport r db ek af contentsha loc = do let rollback = void $ performUnexport r db [ek] loc sendAnnex k rollback $ \f -> - metered Nothing k (return $ Just f) $ \_ m -> do - let m' = combineMeterUpdate pm m - storer f k loc m' + storer f k loc pm , do showNote "not available" return False ) -- Sending a non-annexed file. - GitKey sha1k -> metered Nothing sha1k (return Nothing) $ \_ m -> + GitKey sha1k -> withTmpFile "export" $ \tmp h -> do b <- catObject contentsha liftIO $ L.hPut h b liftIO $ hClose h - storer tmp sha1k loc m + storer tmp sha1k loc nullMeterUpdate if sent then next $ cleanupExport r db ek loc True else stop diff --git a/Remote/Helper/Special.hs b/Remote/Helper/Special.hs index 55c2a86321..8a125109c4 100644 --- a/Remote/Helper/Special.hs +++ b/Remote/Helper/Special.hs @@ -1,6 +1,6 @@ {- helpers for special remotes - - - Copyright 2011-2018 Joey Hess + - Copyright 2011-2019 Joey Hess - - Licensed under the GNU GPL version 3 or higher. -} @@ -157,6 +157,8 @@ specialRemoteCfg c = SpecialRemoteCfg (getChunkConfig c) True -- Modifies a base Remote to support both chunking and encryption, -- which special remotes typically should support. +-- +-- Handles progress displays when displayProgress is set. specialRemote :: RemoteModifier specialRemote c = specialRemote' (specialRemoteCfg c) c @@ -192,6 +194,12 @@ specialRemote' cfg c preparestorer prepareretriever prepareremover preparecheckp , whereisKey = if noChunks (chunkConfig cfg) && not isencrypted then whereisKey baser else Nothing + , exportActions = (exportActions baser) + { storeExport = \f k l p -> displayprogress p k (Just f) $ + storeExport (exportActions baser) f k l + , retrieveExport = \k l f p -> displayprogress p k Nothing $ + retrieveExport (exportActions baser) k l f + } } cip = cipherKey c (gitconfig baser) isencrypted = isJust (extractCipher c)