summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-08-17 11:35:34 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-08-17 11:35:34 -0400
commitcdbf4d2873b0655c06b0de0d6c4e73e499101692 (patch)
treefe7c2ad4072b2a60f5f9b94227c1b361aee4df53 /Command
parentefaffb47e901357fc8ffeb224d240c1f9238fbeb (diff)
make whereis show urls when web remote does not have content
This is needed when external special remotes register an url for a key.
Diffstat (limited to 'Command')
-rw-r--r--Command/Whereis.hs15
1 files changed, 13 insertions, 2 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