wired up global options

Note that I ran into a problem where parsing the global options looped
forever, eating memory. It was somehow caused by stacking
combineGlobalSetters inside a combineGlobalSetters. Maybe due to both
using "many"? Anyway, changed things to avoid that.
This commit is contained in:
Joey Hess 2015-07-10 02:03:03 -04:00
parent adb9fddfdd
commit b66a2d6c5b
5 changed files with 25 additions and 24 deletions

View file

@ -29,10 +29,9 @@ import CmdLine.Usage
-- Global options that are accepted by all git-annex sub-commands,
-- although not always used.
gitAnnexGlobalOptions :: Parser GlobalSetter
gitAnnexGlobalOptions = globalSetters
[ commonGlobalOptions
, globalSetter setnumcopies $ option auto
gitAnnexGlobalOptions :: [Parser GlobalSetter]
gitAnnexGlobalOptions = commonGlobalOptions ++
[ globalSetter setnumcopies $ option auto
( long "numcopies" <> short 'N' <> metavar paramNumber
<> help "override default number of copies"
)

View file

@ -53,14 +53,13 @@ cmds = map adddirparam $ cmds_readonly ++ cmds_notreadonly
where
adddirparam c = c { cmdparamdesc = "DIRECTORY " ++ cmdparamdesc c }
options :: Parser GlobalSetter
options = globalSetters
[ commonGlobalOptions
, globalSetter checkUUID $ strOption
globalOptions :: [Parser GlobalSetter]
globalOptions =
globalSetter checkUUID (strOption
( long "uuid" <> metavar paramUUID
<> help "local repository uuid"
)
]
))
: commonGlobalOptions
where
checkUUID expected = getUUID >>= check
where
@ -101,7 +100,7 @@ builtin cmd dir params = do
let (params', fieldparams, opts) = partitionParams params
rsyncopts = ("RsyncOptions", unwords opts)
fields = rsyncopts : filter checkField (parseFields fieldparams)
dispatch False (cmd : params') cmds options fields mkrepo
dispatch False (cmd : params') cmds globalOptions fields mkrepo
"git-annex-shell"
"Restricted login shell for git-annex only SSH access"
where

View file

@ -25,8 +25,8 @@ import Types.Messages
import Types.DeferredParse
-- Global options accepted by both git-annex and git-annex-shell sub-commands.
commonGlobalOptions :: Parser GlobalSetter
commonGlobalOptions = globalSetters
commonGlobalOptions :: [Parser GlobalSetter]
commonGlobalOptions =
[ globalFlag (setforce True)
( long "force"
<> help "allow actions that may lose annexed data"