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

@ -250,7 +250,7 @@ nostat = return Nothing
json :: JSON j => (j -> String) -> StatState j -> String -> StatState String
json fmt a desc = do
j <- a
lift $ maybeShowJSON [(desc, j)]
lift $ maybeShowJSON $ JSONObject [(desc, j)]
return $ fmt j
nojson :: StatState String -> String -> StatState String
@ -374,7 +374,7 @@ transfer_list :: Stat
transfer_list = stat desc $ nojson $ lift $ do
uuidmap <- Remote.remoteMap id
ts <- getTransfers
maybeShowJSON [(desc, map (uncurry jsonify) ts)]
maybeShowJSON $ JSONObject [(desc, map (uncurry jsonify) ts)]
return $ if null ts
then "none"
else multiLine $