Files
ghcup-hs/lib/GHCup/Version.hs

48 lines
1.3 KiB
Haskell
Raw Normal View History

2020-01-11 21:15:05 +01:00
{-# LANGUAGE QuasiQuotes #-}
2020-07-22 01:08:58 +02:00
{-|
Module : GHCup.Version
Description : Version information and version handling.
2020-07-22 01:08:58 +02:00
Copyright : (c) Julian Ospald, 2020
2020-07-30 20:04:02 +02:00
License : LGPL-3.0
2020-07-22 01:08:58 +02:00
Maintainer : hasufell@hasufell.de
Stability : experimental
Portability : POSIX
-}
2020-01-11 21:15:05 +01:00
module GHCup.Version where
import GHCup.Utils.Version.QQ
import GHCup.Types
2020-01-11 21:15:05 +01:00
import Data.Versions
import URI.ByteString
import URI.ByteString.QQ
2020-04-17 16:56:56 +02:00
import qualified Data.Text as T
2020-08-09 17:39:02 +02:00
-- | This reflects the API version of the YAML.
ghcupURL :: URI
ghcupURL = [uri|https://www.haskell.org/ghcup/data/ghcup-0.0.4.yaml|]
2020-01-11 21:15:05 +01:00
2020-08-09 17:39:02 +02:00
-- | The current ghcup version.
2020-01-11 21:15:05 +01:00
ghcUpVer :: PVP
2020-10-13 00:09:35 +02:00
ghcUpVer = [pver|0.1.12|]
2020-04-17 16:56:56 +02:00
2020-07-22 01:08:58 +02:00
-- | ghcup version as numeric string.
2020-04-17 16:56:56 +02:00
numericVer :: String
numericVer = T.unpack . prettyPVP $ ghcUpVer
versionCmp :: Versioning -> VersionCmp -> Bool
versionCmp ver1 (VR_gt ver2) = ver1 > ver2
versionCmp ver1 (VR_gteq ver2) = ver1 >= ver2
versionCmp ver1 (VR_lt ver2) = ver1 < ver2
versionCmp ver1 (VR_lteq ver2) = ver1 <= ver2
versionCmp ver1 (VR_eq ver2) = ver1 == ver2
versionRange :: Versioning -> VersionRange -> Bool
versionRange ver' (SimpleRange cmps) = and $ fmap (versionCmp ver') cmps
versionRange ver' (OrRange cmps range) =
versionRange ver' (SimpleRange cmps) || versionRange ver' range