addurl, get: Added --json-progress option, which adds progress objects to the json output.
This doesn't work right when used with -J yet, and there is some really ugly hand-crafting of part of the json output.
This commit is contained in:
parent
f421a7f001
commit
05d4438383
12 changed files with 55 additions and 12 deletions
|
@ -13,6 +13,7 @@ module Messages.JSON (
|
|||
note,
|
||||
add,
|
||||
complete,
|
||||
progress,
|
||||
DualDisp(..),
|
||||
ObjectMap(..),
|
||||
JSONActionItem(..),
|
||||
|
@ -30,6 +31,8 @@ import Prelude
|
|||
|
||||
import qualified Utility.JSONStream as Stream
|
||||
import Types.Key
|
||||
import Utility.Metered
|
||||
import Utility.Percentage
|
||||
|
||||
start :: String -> Maybe FilePath -> Maybe Key -> IO ()
|
||||
start command file key = B.hPut stdout $ Stream.start $ Stream.AesonObject o
|
||||
|
@ -53,6 +56,20 @@ add = B.hPut stdout . Stream.add
|
|||
complete :: Stream.JSONChunk a -> IO ()
|
||||
complete v = B.hPut stdout $ Stream.start v `B.append` Stream.end
|
||||
|
||||
progress :: IO () -> Integer -> BytesProcessed -> IO ()
|
||||
progress jsonbuffer size bytesprocessed = do
|
||||
B.hPut stdout $ Stream.start $ Stream.AesonObject o
|
||||
putStr ",\"action\":"
|
||||
jsonbuffer
|
||||
B.hPut stdout $ Stream.end
|
||||
B.hPut stdout $ Stream.end
|
||||
where
|
||||
n = fromBytesProcessed bytesprocessed :: Integer
|
||||
Object o = object
|
||||
[ "byte-progress" .= n
|
||||
, "percent-progress" .= showPercentage 2 (percentage size n)
|
||||
]
|
||||
|
||||
-- A value that can be displayed either normally, or as JSON.
|
||||
data DualDisp = DualDisp
|
||||
{ dispNormal :: String
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue