diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-09-14 14:29:58 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-09-14 14:30:48 -0400 |
commit | f8231ade9124faa3e7b517d2a7e76085ac84b562 (patch) | |
tree | 6745e0fc8fe2fc8866ab4837b8d2bc3c88f09c3f /Storage.hs | |
parent | 0a3eb9be07a7514f5544384bc914f22ea88c24a8 (diff) | |
download | keysafe-f8231ade9124faa3e7b517d2a7e76085ac84b562.tar.gz |
Warn when --uploadqueued fails to upload to servers.
Diffstat (limited to 'Storage.hs')
-rw-r--r-- | Storage.hs | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -12,6 +12,7 @@ import Storage.Local import Storage.Network import Servers import Data.Maybe +import Data.List import System.FilePath import Control.Monad import qualified Data.Set as S @@ -109,9 +110,18 @@ retrieveShares (StorageLocations locs) sis updateprogress = do -- all of them. go (unusedlocs++[loc]) usedlocs' rest shares' -uploadQueued :: Maybe LocalStorageDirectory -> IO () +-- | Returns descriptions of any failures. +uploadQueued :: Maybe LocalStorageDirectory -> IO [String] uploadQueued d = do StorageLocations locs <- allStorageLocations d - forM_ locs $ \loc -> case uploadQueue loc of - Nothing -> return () + results <- forM locs $ \loc -> case uploadQueue loc of + Nothing -> return [] Just q -> moveShares q loc + return $ processresults (concat results) [] + where + processresults [] c = nub c + processresults (StoreSuccess:rs) c = processresults rs c + processresults (StoreFailure e:rs) c = processresults rs (e:c) + processresults (StoreAlreadyExists:rs) c = + processresults rs ("Unable to upload a share to a server due to a name conflict.":c) + |