aboutsummaryrefslogtreecommitdiff
path: root/CmdLine/GlobalSetter.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-10 02:18:08 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-10 02:18:08 -0400
commitbc9b0307cf427ab8ca6532c2ae4e0086e7ad4a4a (patch)
tree43d0984a200cb6ca68335da30b2574650955e2a4 /CmdLine/GlobalSetter.hs
parentccd76ebf641ad481e549da97c85f73101a3149fd (diff)
improve global options display in --help
Put them in the help of subcommands, not the main command. And, hide them from the synopsis, to avoid cluttering it.
Diffstat (limited to 'CmdLine/GlobalSetter.hs')
-rw-r--r--CmdLine/GlobalSetter.hs24
1 files changed, 24 insertions, 0 deletions
diff --git a/CmdLine/GlobalSetter.hs b/CmdLine/GlobalSetter.hs
new file mode 100644
index 000000000..eb73f3f12
--- /dev/null
+++ b/CmdLine/GlobalSetter.hs
@@ -0,0 +1,24 @@
+{- git-annex global options
+ -
+ - Copyright 2015 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module CmdLine.GlobalSetter where
+
+import Types.DeferredParse
+import Common
+import Annex
+
+import Options.Applicative
+
+globalFlag :: Annex () -> Mod FlagFields GlobalSetter -> Parser GlobalSetter
+globalFlag setter = flag' (DeferredParse setter)
+
+globalSetter :: (v -> Annex ()) -> Parser v -> Parser GlobalSetter
+globalSetter setter parser = DeferredParse . setter <$> parser
+
+combineGlobalSetters :: [Parser GlobalSetter] -> Parser GlobalSetter
+combineGlobalSetters l = DeferredParse . sequence_ . map getParsed
+ <$> many (foldl1 (<|>) l)