summaryrefslogtreecommitdiff
path: root/Git/Version.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Git/Version.hs')
-rw-r--r--Git/Version.hs32
1 files changed, 32 insertions, 0 deletions
diff --git a/Git/Version.hs b/Git/Version.hs
new file mode 100644
index 0000000..19ff945
--- /dev/null
+++ b/Git/Version.hs
@@ -0,0 +1,32 @@
+{- git versions
+ -
+ - Copyright 2011, 2013 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+{-# OPTIONS_GHC -fno-warn-tabs #-}
+
+module Git.Version (
+ installed,
+ older,
+ normalize,
+ GitVersion,
+) where
+
+import Common
+import Utility.DottedVersion
+
+type GitVersion = DottedVersion
+
+installed :: IO GitVersion
+installed = normalize . extract <$> readProcess "git" ["--version"]
+ where
+ extract s = case lines s of
+ [] -> ""
+ (l:_) -> unwords $ drop 2 $ words l
+
+older :: String -> IO Bool
+older n = do
+ v <- installed
+ return $ v < normalize n