diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-08 17:14:01 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-08 17:14:01 -0400 |
commit | 5f8d17ef558ee82e4cf9e75b8d750e90d35731ee (patch) | |
tree | 9fe4d61c0713464b7818c4998f5af8f097ae2d48 /Annex/Wanted.hs | |
parent | 6a885aacfc549c2504ee847ead806b6f10b991bf (diff) |
generalized Annex.Wanted
this should make it easy to use from inside the assistant, where
everything is an AssociatedFile.
Diffstat (limited to 'Annex/Wanted.hs')
-rw-r--r-- | Annex/Wanted.hs | 46 |
1 files changed, 18 insertions, 28 deletions
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 |