allow using Aeson for streaming JSON output

Keeping Text.JSON use for now, because it seems a better fit for most of
the commands, which don't use very structured JSON objects, but just output
whatever fields suites them. But this lets Aeson be used when a more
structured data type is available to serialize to JSON.
This commit is contained in:
Joey Hess 2016-07-26 13:30:07 -04:00
parent fdd87d8e55
commit a030d0a8b7
Failed to extract signature
10 changed files with 52 additions and 33 deletions

View file

@ -72,6 +72,7 @@ import Remote.List
import Config
import Git.Types (RemoteName)
import qualified Git
import Utility.JSONStream
{- Map from UUIDs of Remotes to a calculated value. -}
remoteMap :: (Remote -> v) -> Annex (M.Map UUID v)
@ -203,7 +204,7 @@ prettyPrintUUIDsWith
-> Annex String
prettyPrintUUIDsWith optfield header descm showval uuidvals = do
hereu <- getUUID
maybeShowJSON [(header, map (jsonify hereu) uuidvals)]
maybeShowJSON $ JSONObject [(header, map (jsonify hereu) uuidvals)]
return $ unwords $ map (\u -> "\t" ++ prettify hereu u ++ "\n") uuidvals
where
finddescription u = M.findWithDefault "" u descm