diff options
-rw-r--r-- | Command/Whereis.hs | 26 | ||||
-rw-r--r-- | Messages.hs | 1 | ||||
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | doc/bugs/--json_issues.mdwn | 5 |
4 files changed, 21 insertions, 12 deletions
diff --git a/Command/Whereis.hs b/Command/Whereis.hs index 7b8bdf351..ba815f33c 100644 --- a/Command/Whereis.hs +++ b/Command/Whereis.hs @@ -7,8 +7,6 @@ module Command.Whereis where -import qualified Data.Map as M - import Common.Annex import Command import Remote @@ -16,6 +14,8 @@ import Logs.Trust import Logs.Web import Remote.Web (getWebUrls) +import qualified Data.Map as M + cmd :: Command cmd = noCommit $ withGlobalOptions (jsonOption : annexedMatchingOptions) $ command "whereis" SectionQuery @@ -65,21 +65,21 @@ perform remotemap key = do -- 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 + showRemoteUrls "web" =<< getWebUrls key forM_ (mapMaybe (`M.lookup` remotemap) locations) $ - performRemote key + performRemoteUrls key if null safelocations then stop else next $ return True where copiesplural 1 = "copy" copiesplural _ = "copies" untrustedheader = "The following untrusted locations may also have copies:\n" -performRemote :: Key -> Remote -> Annex () -performRemote key remote = do +performRemoteUrls :: Key -> Remote -> Annex () +performRemoteUrls key remote = do ls <- (++) <$> askremote <*> claimedurls - showRemote (name remote) ls + showRemoteUrls (name remote) ls where askremote = maybe (pure []) (flip id key) (whereisKey remote) claimedurls = do @@ -89,8 +89,10 @@ performRemote key remote = do <$> 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 +showRemoteUrls :: String -> [String] -> Annex () +showRemoteUrls nm us + | null us = return () + | otherwise = do + let ls = unlines $ map (\u -> nm ++ ": " ++ u) us + outputMessage noop ('\n' : indent ls ++ "\n") + maybeShowJSON [("urls", us)] diff --git a/Messages.hs b/Messages.hs index b62e6d2a7..ff26380dd 100644 --- a/Messages.hs +++ b/Messages.hs @@ -35,6 +35,7 @@ module Messages ( disableDebugOutput, debugEnabled, commandProgressDisabled, + outputMessage, ) where import Text.JSON diff --git a/debian/changelog b/debian/changelog index 22db45245..c5a8bed2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,7 @@ git-annex (6.20151219) UNRELEASED; urgency=medium * info --json: Improve json for "backend usage", using a nested object with fields for each backend instead of the previous weird nested lists. This may break existing parsers of this json output, if there were any. + * whereis --json: Make url list be included in machine-parseable form. -- Joey Hess <id@joeyh.name> Sat, 19 Dec 2015 13:31:17 -0400 diff --git a/doc/bugs/--json_issues.mdwn b/doc/bugs/--json_issues.mdwn index b1cad44da..4a73540c4 100644 --- a/doc/bugs/--json_issues.mdwn +++ b/doc/bugs/--json_issues.mdwn @@ -6,6 +6,9 @@ http://git-annex.branchable.com/tips/using_the_web_as_a_special_remote/#comment- If the "note" properties are meant to be comments, it might be a good idea to find another property for the url(s). Please note that I haven't looked at multiple urls for an object, so I'm not sure that only the last listed url will appear in parsed json object. +> The note properties are any notes git-annex normally displays while +> running a command. + ### What steps will reproduce the problem? git-annex whereis --json @@ -42,3 +45,5 @@ umeboshi@bard:~/tmp/testweb$ ### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders) Lol! Positive note! I spend a couple of days making specially crafted rss files for importfeed, so I can have appropriate filenames, then look back and see that you are working on '--batch --with-files' options to addurl. Have a Happy New Year! :) + +> [[fixed|done]] --[[Joey]] |