diff options
-rw-r--r-- | Command/Whereis.hs | 15 | ||||
-rw-r--r-- | Remote/Web.hs | 4 |
2 files changed, 15 insertions, 4 deletions
diff --git a/Command/Whereis.hs b/Command/Whereis.hs index 3610eed78..7b8bdf351 100644 --- a/Command/Whereis.hs +++ b/Command/Whereis.hs @@ -14,6 +14,7 @@ import Command import Remote import Logs.Trust import Logs.Web +import Remote.Web (getWebUrls) cmd :: Command cmd = noCommit $ withGlobalOptions (jsonOption : annexedMatchingOptions) $ @@ -60,6 +61,11 @@ perform remotemap key = do unless (null safelocations) $ showLongNote pp pp' <- prettyPrintUUIDs "untrusted" untrustedlocations unless (null untrustedlocations) $ showLongNote $ untrustedheader ++ pp' + + -- Since other remotes than the web remote can set urls + -- where a key can be downloaded, get and show all such urls + -- as a special case. + showRemote "web" =<< getWebUrls key forM_ (mapMaybe (`M.lookup` remotemap) locations) $ performRemote key if null safelocations then stop else next $ return True @@ -73,8 +79,7 @@ performRemote key remote = do ls <- (++) <$> askremote <*> claimedurls - unless (null ls) $ showLongNote $ unlines $ - map (\l -> name remote ++ ": " ++ l) ls + showRemote (name remote) ls where askremote = maybe (pure []) (flip id key) (whereisKey remote) claimedurls = do @@ -83,3 +88,9 @@ performRemote key remote = do . map getDownloader <$> getUrls key filterM (\u -> (==) <$> pure remote <*> claimingUrl u) us + +showRemote :: String -> [String] -> Annex () +showRemote n ls + | null ls = return () + | otherwise = showLongNote $ unlines $ + map (\l -> n ++ ": " ++ l) ls diff --git a/Remote/Web.hs b/Remote/Web.hs index 357522836..700f40480 100644 --- a/Remote/Web.hs +++ b/Remote/Web.hs @@ -7,7 +7,7 @@ {-# LANGUAGE CPP #-} -module Remote.Web (remote) where +module Remote.Web (remote, getWebUrls) where import Common.Annex import Types.Remote @@ -54,7 +54,7 @@ gen r _ c gc = , removeKey = dropKey , checkPresent = checkKey , checkPresentCheap = False - , whereisKey = Just getWebUrls + , whereisKey = Nothing , remoteFsck = Nothing , repairRepo = Nothing , config = c |