better types allowed breaking module dep loop
This commit is contained in:
parent
80efafe496
commit
971ab27e78
9 changed files with 64 additions and 70 deletions
28
Remote.hs
28
Remote.hs
|
@ -14,6 +14,7 @@ module Remote (
|
|||
removeKey,
|
||||
hasKey,
|
||||
hasKeyCheap,
|
||||
keyPossibilities,
|
||||
|
||||
remoteTypes,
|
||||
genList,
|
||||
|
@ -45,6 +46,8 @@ import qualified Annex
|
|||
import Locations
|
||||
import Utility
|
||||
import Config
|
||||
import Trust
|
||||
import LocationLog
|
||||
|
||||
import qualified Remote.Git
|
||||
import qualified Remote.S3
|
||||
|
@ -110,6 +113,31 @@ remotesWithUUID rs us = filter (\r -> uuid r `elem` us) rs
|
|||
remotesWithoutUUID :: [Remote Annex] -> [UUID] -> [Remote Annex]
|
||||
remotesWithoutUUID rs us = filter (\r -> uuid r `notElem` us) rs
|
||||
|
||||
{- 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)
|
||||
|
||||
|
||||
{- Filename of remote.log. -}
|
||||
remoteLog :: Annex FilePath
|
||||
remoteLog = do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue