diff options
author | Joey Hess <joey@kitenet.net> | 2011-06-01 17:49:37 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-06-01 17:57:31 -0400 |
commit | a8fb97d2ce8e75b36b8e1572a83efd341e67d43e (patch) | |
tree | ab24a8af581281ff8b006309acfb4000317ad072 /RemoteUtils.hs | |
parent | 7a3d9d8c2e2bd53d0d4290e99186c6e37f18456d (diff) |
Add --trust, --untrust, and --semitrust options.
Diffstat (limited to 'RemoteUtils.hs')
-rw-r--r-- | RemoteUtils.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/RemoteUtils.hs b/RemoteUtils.hs new file mode 100644 index 000000000..d042780e4 --- /dev/null +++ b/RemoteUtils.hs @@ -0,0 +1,42 @@ +{- git-annex remotes overflow (can't go in there due to dependency cycles) + - + - Copyright 2011 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module RemoteUtils where + +import Control.Monad.State (liftIO) +import Data.List + +import Annex +import Trust +import Remote +import UUID +import LocationLog +import Key + +{- Cost ordered lists of remotes that the LocationLog indicate may have a key. + - + - Also returns a list of UUIDs that are trusted to have the key + - (some may not have configured remotes). + -} +keyPossibilities :: Key -> Annex ([Remote Annex], [UUID]) +keyPossibilities key = do + g <- Annex.gitRepo + u <- getUUID g + trusted <- trustGet Trusted + + -- get uuids of all remotes that are recorded to have the key + uuids <- liftIO $ keyLocations g key + let validuuids = filter (/= u) uuids + + -- note that validuuids is assumed to not have dups + let validtrusteduuids = intersect validuuids trusted + + -- remotes that match uuids that have the key + allremotes <- genList + let validremotes = remotesWithUUID allremotes validuuids + + return (sort validremotes, validtrusteduuids) |