summaryrefslogtreecommitdiff
path: root/Assistant/Drop.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-18 15:37:57 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-18 15:37:57 -0400
commit2422fc199fb859b502ab61cbc0d64604b93508a9 (patch)
treec702ef20c0ffd0b14327b704a6a8267424fe72c3 /Assistant/Drop.hs
parent3e369ace228e984224c417c6f3524f0b4f5900ac (diff)
check and drop unwanted content from remotes after receiving a transfer
Diffstat (limited to 'Assistant/Drop.hs')
-rw-r--r--Assistant/Drop.hs20
1 files changed, 13 insertions, 7 deletions
diff --git a/Assistant/Drop.hs b/Assistant/Drop.hs
index b3dca3929..dea5934ee 100644
--- a/Assistant/Drop.hs
+++ b/Assistant/Drop.hs
@@ -8,24 +8,30 @@
module Assistant.Drop where
import Assistant.Common
+import Assistant.DaemonStatus
import Logs.Location
import Logs.Trust
+import Types.Remote (AssociatedFile)
import qualified Remote
import qualified Command.Drop
import Command
import Annex.Wanted
import Config
-{- Drop from local or remote when allowed by the preferred content and
+{- Drop from syncable remotes when allowed by the preferred content and
- numcopies settings. -}
-handleDrops :: [Remote] -> Bool -> FilePath -> Key -> Annex ()
-handleDrops rs present f key = do
+handleRemoteDrops :: DaemonStatusHandle -> Key -> AssociatedFile -> Annex ()
+handleRemoteDrops dstatus key (Just f) = do
+ syncrs <- liftIO $ syncRemotes <$> getDaemonStatus dstatus
locs <- loggedLocations key
- handleDrops' locs rs present f key
+ handleDrops locs syncrs False f key
+handleRemoteDrops _ _ _ = noop
-handleDrops' :: [UUID] -> [Remote] -> Bool -> FilePath -> Key -> Annex ()
-handleDrops' locs rs present f key
- | present = do
+{- Drop from local and/or remote when allowed by the preferred content and
+ - numcopies settings. -}
+handleDrops :: [UUID] -> [Remote] -> Bool -> FilePath -> Key -> Annex ()
+handleDrops locs rs fromhere f key
+ | fromhere = do
n <- getcopies
if checkcopies n
then go rs =<< dropl n