a meter (combinemeter m)
| otherwise = nometer
go (MessageState { outputType = SerializedOutput h _ }) = do
- liftIO $ outputSerialized h $ BeginProgressMeter msize
+ liftIO $ outputSerialized h BeginProgressMeter
+ case msize of
+ Just sz -> liftIO $ outputSerialized h $ UpdateProgressMeterTotalSize sz
+ Nothing -> noop
szv <- liftIO $ newIORef msize
meter <- liftIO $ mkMeter msize $ \_ msize' _old new -> do
case msize' of
outputSerialized h $ JSONObject b
_ -> q
loop st
- Left (BeginProgressMeter sz) -> do
+ Left BeginProgressMeter -> do
ost <- runannex (Annex.getState Annex.output)
-- Display a progress meter while running, until
-- the meter ends or a final value is returned.
- metered' ost Nothing sz (runannex showOutput)
+ metered' ost Nothing Nothing (runannex showOutput)
(\meter meterupdate -> loop (Just (meter, meterupdate)))
>>= \case
Right r -> return (Right r)
["om", Proto.serialize (encode_c (decodeBS m))]
formatMessage (TransferOutput (OutputError e)) =
["oe", Proto.serialize (encode_c e)]
- formatMessage (TransferOutput (BeginProgressMeter (Just (TotalSize n)))) =
- ["opb", Proto.serialize n]
- formatMessage (TransferOutput (BeginProgressMeter Nothing)) =
- ["opbx"]
- formatMessage (TransferOutput (UpdateProgressMeter n)) =
- ["op", Proto.serialize n]
+ formatMessage (TransferOutput BeginProgressMeter) =
+ ["opb"]
formatMessage (TransferOutput (UpdateProgressMeterTotalSize (TotalSize sz))) =
["ops", Proto.serialize sz]
+ formatMessage (TransferOutput (UpdateProgressMeter n)) =
+ ["op", Proto.serialize n]
formatMessage (TransferOutput EndProgressMeter) =
["ope"]
formatMessage (TransferOutput BeginPrompt) =
TransferOutput . OutputMessage . encodeBS . decode_c
parseCommand "oe" = Proto.parse1 $
TransferOutput . OutputError . decode_c
- parseCommand "opb" = Proto.parse1 $
- TransferOutput . BeginProgressMeter . Just . TotalSize
- parseCommand "opbx" = Proto.parse0 $
- TransferOutput (BeginProgressMeter Nothing)
- parseCommand "op" = Proto.parse1 $
- TransferOutput . UpdateProgressMeter
+ parseCommand "opb" = Proto.parse0 $
+ TransferOutput BeginProgressMeter
parseCommand "ops" = Proto.parse1 $
TransferOutput . UpdateProgressMeterTotalSize . TotalSize
+ parseCommand "op" = Proto.parse1 $
+ TransferOutput . UpdateProgressMeter
parseCommand "ope" = Proto.parse0 $
TransferOutput EndProgressMeter
parseCommand "oprb" = Proto.parse0 $