From 5f8d17ef558ee82e4cf9e75b8d750e90d35731ee Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 8 Oct 2012 17:14:01 -0400 Subject: generalized Annex.Wanted this should make it easy to use from inside the assistant, where everything is an AssociatedFile. --- Annex/Wanted.hs | 46 ++++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) (limited to 'Annex/Wanted.hs') diff --git a/Annex/Wanted.hs b/Annex/Wanted.hs index 2775c22cb..8310fdd8f 100644 --- a/Annex/Wanted.hs +++ b/Annex/Wanted.hs @@ -8,43 +8,33 @@ module Annex.Wanted where import Common.Annex -import qualified Remote -import Annex.Content import Logs.PreferredContent import Git.FilePath import qualified Annex import Annex.UUID +import Types.Remote import qualified Data.Set as S -checkAuto :: (Bool -> Annex Bool) -> Annex Bool -checkAuto a = Annex.getState Annex.auto >>= a - -{- A file's content should be gotten if it's not already present. - - In auto mode, only get files that are preferred content. -} -shouldGet :: FilePath -> Key -> Bool -> Annex Bool -shouldGet file key auto = (not <$> inAnnex key) <&&> want - where - want - | auto = do - fp <- inRepo $ toTopFilePath file - isPreferredContent Nothing S.empty fp - | otherwise = return True +{- Check if a file is preferred content for the local repository. -} +wantGet :: AssociatedFile -> Annex Bool +wantGet Nothing = return True +wantGet (Just file) = do + fp <- inRepo $ toTopFilePath file + isPreferredContent Nothing S.empty fp -{- A file's content should be sent to a remote. - - In auto mode, only send files that are preferred content of the remote. -} -shouldSend :: Remote -> FilePath -> Bool -> Annex Bool -shouldSend _ _ False = return True -shouldSend to file True = do +{- Check if a file is preferred content for a remote. -} +wantSend :: UUID -> AssociatedFile -> Annex Bool +wantSend _ Nothing = return True +wantSend to (Just file) = do fp <- inRepo $ toTopFilePath file - isPreferredContent (Just $ Remote.uuid to) S.empty fp + isPreferredContent (Just to) S.empty fp -{- A file's content should be dropped normally. - - (This does not check numcopies though.) - - In auto mode, hold on to preferred content. -} -shouldDrop :: Maybe Remote -> FilePath -> Bool -> Annex Bool -shouldDrop _ _ False = return True -shouldDrop from file True = do +{- Check if a file can be dropped, maybe from a remote. + - Don't drop files that are preferred content. -} +wantDrop :: Maybe UUID -> AssociatedFile -> Annex Bool +wantDrop _ Nothing = return True +wantDrop from (Just file) = do fp <- inRepo $ toTopFilePath file - u <- maybe getUUID (return . Remote.uuid) from + u <- maybe getUUID (return . id) from not <$> isPreferredContent (Just u) (S.singleton u) fp -- cgit v1.2.3