--json: multi-line notes

--json: When there are multiple lines of notes about a file, make the note
field multiline, rather than the old behavior of only including the last
line.

Using newlines in the note is perhaps not ideal, but upgrading it to an
array in this case would be an annoying inconsistency to need to deal with.

This commit was sponsored by Ole-Morten Duesund on Patreon.
This commit is contained in:
Joey Hess 2018-02-16 13:27:17 -04:00
parent b1234135c3
commit 7e454ee341
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 8 additions and 1 deletions

View file

@ -10,6 +10,9 @@ git-annex (6.20180113) UNRELEASED; urgency=medium
requires it. requires it.
* Add gpg-agent to Build-Depends. * Add gpg-agent to Build-Depends.
Needed to run the test suite. Needed to run the test suite.
* --json: When there are multiple lines of notes about a file, make the note
field multiline, rather than the old behavior of only including the
last line.
-- Joey Hess <id@joeyh.name> Wed, 24 Jan 2018 20:42:55 -0400 -- Joey Hess <id@joeyh.name> Wed, 24 Jan 2018 20:42:55 -0400

View file

@ -75,8 +75,12 @@ end b (Just (o, _)) = Just (HM.insert "success" (toJSON b) o, True)
end _ Nothing = Nothing end _ Nothing = Nothing
note :: String -> JSONBuilder note :: String -> JSONBuilder
note s (Just (o, e)) = Just (HM.insert "note" (toJSON s) o, e)
note _ Nothing = Nothing note _ Nothing = Nothing
note s (Just (o, e)) = Just (HM.insertWith combinelines "note" (toJSON s) o, e)
where
combinelines (String new) (String old) =
String (old <> T.pack "\n" <> new)
combinelines new _old = new
info :: String -> JSONBuilder info :: String -> JSONBuilder
info s _ = Just (o, True) info s _ = Just (o, True)