summaryrefslogtreecommitdiff
path: root/Git
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2014-12-16 14:04:40 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2014-12-16 14:04:40 -0400
commit95418cc430284b65af13105f7c63da08908dd826 (patch)
tree9afab6aad8025f454b12b038936f6322b6a82f1c /Git
parentbe93817b5bd80b051d5037e0641b63c16838b5fa (diff)
Use wget -q --show-progress for less verbose wget output, when built with wget 1.16.
Diffstat (limited to 'Git')
-rw-r--r--Git/Version.hs33
1 files changed, 7 insertions, 26 deletions
diff --git a/Git/Version.hs b/Git/Version.hs
index 5c61f859e..1c53b4bfd 100644
--- a/Git/Version.hs
+++ b/Git/Version.hs
@@ -5,18 +5,16 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-module Git.Version where
+module Git.Version (
+ installed,
+ normalize,
+ GitVersion,
+) where
import Common
+import Utility.DottedVersion
-data GitVersion = GitVersion String Integer
- deriving (Eq)
-
-instance Ord GitVersion where
- compare (GitVersion _ x) (GitVersion _ y) = compare x y
-
-instance Show GitVersion where
- show (GitVersion s _) = s
+type GitVersion = DottedVersion
installed :: IO GitVersion
installed = normalize . extract <$> readProcess "git" ["--version"]
@@ -24,20 +22,3 @@ installed = normalize . extract <$> readProcess "git" ["--version"]
extract s = case lines s of
[] -> ""
(l:_) -> unwords $ drop 2 $ words l
-
-{- To compare dotted versions like 1.7.7 and 1.8, they are normalized to
- - a somewhat arbitrary integer representation. -}
-normalize :: String -> GitVersion
-normalize v = GitVersion v $
- sum $ mult 1 $ reverse $ extend precision $ take precision $
- map readi $ split "." v
- where
- extend n l = l ++ replicate (n - length l) 0
- mult _ [] = []
- mult n (x:xs) = (n*x) : mult (n*10^width) xs
- readi :: String -> Integer
- readi s = case reads s of
- ((x,_):_) -> x
- _ -> 0
- precision = 10 -- number of segments of the version to compare
- width = length "yyyymmddhhmmss" -- maximum width of a segment