fix handling of removal of keys that are not present

This commit is contained in:
Joey Hess 2014-07-28 14:14:01 -04:00
parent 80cc554c82
commit 153ace4524
2 changed files with 8 additions and 2 deletions

View file

@ -160,9 +160,15 @@ remove d k = liftIO $ do
- before it can delete them. -}
void $ tryIO $ mapM_ allowWrite =<< dirContents dir
#endif
catchBoolIO $ do
ok <- catchBoolIO $ do
removeDirectoryRecursive dir
return True
{- Removing the subdirectory will fail if it doesn't exist.
- But, we want to succeed in that case, as long as the directory
- remote's top-level directory does exist. -}
if ok
then return ok
else doesDirectoryExist d <&&> (not <$> doesDirectoryExist dir)
where
dir = storeDir d k

View file

@ -64,7 +64,7 @@ data RemoteA a = Remote {
retrieveKeyFile :: Key -> AssociatedFile -> FilePath -> MeterUpdate -> a Bool,
-- retrieves a key's contents to a tmp file, if it can be done cheaply
retrieveKeyFileCheap :: Key -> FilePath -> a Bool,
-- removes a key's contents
-- removes a key's contents (succeeds if the contents are not present)
removeKey :: Key -> a Bool,
-- Checks if a key is present in the remote; if the remote
-- cannot be accessed returns a Left error message.