start on serializing Messages
Json objects not yet handled, and some other special cases, but this is the bulk of the messages. For progress meters, POSIXTime does not have a Read instance (or a suitable Show instance), so had to switch to using a Double for progress meters. This commit was sponsored by Ethan Aubin on Patreon.
This commit is contained in:
parent
63839532c9
commit
5a41e46bd4
5 changed files with 62 additions and 25 deletions
|
@ -1,6 +1,6 @@
|
|||
{- git-annex output messages, including concurrent output to display regions
|
||||
-
|
||||
- Copyright 2010-2018 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2010-2020 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- Licensed under the GNU AGPL version 3 or higher.
|
||||
-}
|
||||
|
@ -29,6 +29,7 @@ outputMessage' jsonoutputter jsonbuilder msg = withMessageState $ \s -> case out
|
|||
| otherwise -> liftIO $ flushed $ S.putStr msg
|
||||
JSONOutput _ -> void $ jsonoutputter jsonbuilder s
|
||||
QuietOutput -> q
|
||||
SerializedOutput -> liftIO $ outputSerialized $ OutputMessage (decodeBS' msg)
|
||||
|
||||
-- Buffer changes to JSON until end is reached and then emit it.
|
||||
bufferJSON :: JSONBuilder -> MessageState -> Annex Bool
|
||||
|
@ -67,6 +68,8 @@ outputError msg = withMessageState $ \s -> case (outputType s, jsonBuffer s) of
|
|||
let jb' = Just (JSON.addErrorMessage (lines msg) jb)
|
||||
in Annex.changeState $ \st ->
|
||||
st { Annex.output = s { jsonBuffer = jb' } }
|
||||
(SerializedOutput, _) ->
|
||||
liftIO $ outputSerialized $ OutputError msg
|
||||
_
|
||||
| concurrentOutputEnabled s -> concurrentMessage s True msg go
|
||||
| otherwise -> go
|
||||
|
@ -81,3 +84,6 @@ q = noop
|
|||
|
||||
flushed :: IO () -> IO ()
|
||||
flushed a = a >> hFlush stdout
|
||||
|
||||
outputSerialized :: SerializedOutput -> IO ()
|
||||
outputSerialized = print
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue