aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Whereis.hs26
-rw-r--r--Messages.hs1
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/--json_issues.mdwn5
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]]