summaryrefslogtreecommitdiff
path: root/CmdLine/GlobalSetter.hs
diff options
context:
space:
mode:
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)