2f4d4d1c45
This includes a generic JSONStream library built on top of Text.JSON (somewhat hackishly). It would be possible to stream out a single json document describing all actions, but it's probably better for consumers if they can expect one json document per line, so I did it that way instead. Output from external programs used for transferring files is not currently hidden when outputting json, which probably makes it not very useful there. This may be dealt with if there is demand for json output for --get or --move to be parsable. The version, status, and find subcommands have hand-crafted output and don't do json. The whereis subcommand needs to be modified to produce useful json.
46 lines
1.4 KiB
Haskell
46 lines
1.4 KiB
Haskell
{- git-annex dashed options
|
|
-
|
|
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Options where
|
|
|
|
import System.Console.GetOpt
|
|
import System.Log.Logger
|
|
import Control.Monad.State (liftIO)
|
|
|
|
import qualified Annex
|
|
import Types
|
|
import Command
|
|
|
|
{- Each dashed command-line option results in generation of an action
|
|
- in the Annex monad that performs the necessary setting.
|
|
-}
|
|
type Option = OptDescr (Annex ())
|
|
|
|
commonOptions :: [Option]
|
|
commonOptions =
|
|
[ Option [] ["force"] (NoArg (setforce True))
|
|
"allow actions that may lose annexed data"
|
|
, Option ['F'] ["fast"] (NoArg (setfast True))
|
|
"avoid slow operations"
|
|
, Option ['q'] ["quiet"] (NoArg (setoutput Annex.QuietOutput))
|
|
"avoid verbose output"
|
|
, Option ['v'] ["verbose"] (NoArg (setoutput Annex.NormalOutput))
|
|
"allow verbose output (default)"
|
|
, Option ['j'] ["json"] (NoArg (setoutput Annex.JSONOutput))
|
|
"enable JSON output"
|
|
, Option ['d'] ["debug"] (NoArg (setdebug))
|
|
"show debug messages"
|
|
, Option ['b'] ["backend"] (ReqArg setforcebackend paramName)
|
|
"specify key-value backend to use"
|
|
]
|
|
where
|
|
setforce v = Annex.changeState $ \s -> s { Annex.force = v }
|
|
setfast v = Annex.changeState $ \s -> s { Annex.fast = v }
|
|
setoutput v = Annex.changeState $ \s -> s { Annex.output = v }
|
|
setforcebackend v = Annex.changeState $ \s -> s { Annex.forcebackend = Just v }
|
|
setdebug = liftIO $ updateGlobalLogger rootLoggerName $
|
|
setLevel DEBUG
|