fix --json-progress --json to be same as --json --json-progress
Fix behavior of --json-progress followed by --json, in which the latter option disabled the former. This commit was supported by the NSF-funded DataLad project.
This commit is contained in:
parent
8ccfbd14d0
commit
fa65f1d240
5 changed files with 35 additions and 12 deletions
3
Annex.hs
3
Annex.hs
|
@ -275,7 +275,8 @@ addCleanup k a = changeState $ \s ->
|
|||
{- Sets the type of output to emit. -}
|
||||
setOutput :: OutputType -> Annex ()
|
||||
setOutput o = changeState $ \s ->
|
||||
s { output = (output s) { outputType = o } }
|
||||
let m = output s
|
||||
in s { output = m { outputType = adjustOutputType (outputType m) o } }
|
||||
|
||||
{- Checks if a flag was set. -}
|
||||
getFlag :: String -> Annex Bool
|
||||
|
|
|
@ -17,6 +17,8 @@ git-annex (6.20180113) UNRELEASED; urgency=medium
|
|||
hopefully hackage finally recognises that OS.
|
||||
* Split Test.hs and avoid optimising it much, to need less memory to
|
||||
compile.
|
||||
* Fix behavior of --json-progress followed by --json, in which
|
||||
the latter option disabled the former.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Wed, 24 Jan 2018 20:42:55 -0400
|
||||
|
||||
|
|
|
@ -295,18 +295,26 @@ combiningOptions =
|
|||
shortopt o h = globalFlag (Limit.addToken [o]) ( short o <> help h <> hidden )
|
||||
|
||||
jsonOption :: GlobalOption
|
||||
jsonOption = globalFlag (Annex.setOutput (JSONOutput False))
|
||||
jsonOption = globalFlag (Annex.setOutput (JSONOutput jsonoptions))
|
||||
( long "json" <> short 'j'
|
||||
<> help "enable JSON output"
|
||||
<> hidden
|
||||
)
|
||||
where
|
||||
jsonoptions = JSONOptions
|
||||
{ jsonProgress = False
|
||||
}
|
||||
|
||||
jsonProgressOption :: GlobalOption
|
||||
jsonProgressOption = globalFlag (Annex.setOutput (JSONOutput True))
|
||||
jsonProgressOption = globalFlag (Annex.setOutput (JSONOutput jsonoptions))
|
||||
( long "json-progress"
|
||||
<> help "include progress in JSON output"
|
||||
<> hidden
|
||||
)
|
||||
where
|
||||
jsonoptions = JSONOptions
|
||||
{ jsonProgress = True
|
||||
}
|
||||
|
||||
-- Note that a command that adds this option should wrap its seek
|
||||
-- action in `allowConcurrentOutput`.
|
||||
|
|
|
@ -55,12 +55,13 @@ metered othermeter key getsrcfile a = withMessageState $ \st ->
|
|||
#else
|
||||
nometer
|
||||
#endif
|
||||
go _ (MessageState { outputType = JSONOutput False }) = nometer
|
||||
go msize (MessageState { outputType = JSONOutput True }) = do
|
||||
buf <- withMessageState $ return . jsonBuffer
|
||||
m <- liftIO $ rateLimitMeterUpdate 0.1 msize $
|
||||
JSON.progress buf msize
|
||||
a (combinemeter m)
|
||||
go msize (MessageState { outputType = JSONOutput jsonoptions })
|
||||
| jsonProgress jsonoptions = do
|
||||
buf <- withMessageState $ return . jsonBuffer
|
||||
m <- liftIO $ rateLimitMeterUpdate 0.1 msize $
|
||||
JSON.progress buf msize
|
||||
a (combinemeter m)
|
||||
| otherwise = nometer
|
||||
|
||||
nometer = a $ combinemeter (const noop)
|
||||
|
||||
|
@ -96,7 +97,7 @@ meteredFile file combinemeterupdate key a =
|
|||
|
||||
needOutputMeter :: MessageState -> Bool
|
||||
needOutputMeter s = case outputType s of
|
||||
JSONOutput True -> True
|
||||
JSONOutput jsonoptions -> jsonProgress jsonoptions
|
||||
NormalOutput | concurrentOutputEnabled s -> True
|
||||
_ -> False
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{- git-annex Messages data types
|
||||
-
|
||||
- Copyright 2012-2017 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2012-2018 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
@ -16,9 +16,20 @@ import Control.Concurrent
|
|||
import System.Console.Regions (ConsoleRegion)
|
||||
#endif
|
||||
|
||||
data OutputType = NormalOutput | QuietOutput | JSONOutput Bool
|
||||
data OutputType = NormalOutput | QuietOutput | JSONOutput JSONOptions
|
||||
deriving (Show)
|
||||
|
||||
data JSONOptions = JSONOptions
|
||||
{ jsonProgress :: Bool
|
||||
}
|
||||
deriving (Show)
|
||||
|
||||
adjustOutputType :: OutputType -> OutputType -> OutputType
|
||||
adjustOutputType (JSONOutput old) (JSONOutput new) = JSONOutput $ JSONOptions
|
||||
{ jsonProgress = jsonProgress old || jsonProgress new
|
||||
}
|
||||
adjustOutputType _old new = new
|
||||
|
||||
data SideActionBlock = NoBlock | StartBlock | InBlock
|
||||
deriving (Eq)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue