From cdbf4d2873b0655c06b0de0d6c4e73e499101692 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 17 Aug 2015 11:35:34 -0400 Subject: make whereis show urls when web remote does not have content This is needed when external special remotes register an url for a key. --- Command/Whereis.hs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'Command') 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 -- cgit v1.2.3