module Summoner.GhcVer
( GhcVer (..)
, showGhcVer
, parseGhcVer
, latestLts
, baseVer
) where
import Relude
import Relude.Extra.Enum (inverseMap)
data GhcVer
= Ghc7103
| Ghc801
| Ghc802
| Ghc822
| Ghc843
deriving (Eq, Ord, Show, Enum, Bounded)
showGhcVer :: GhcVer -> Text
showGhcVer = \case
Ghc7103 -> "7.10.3"
Ghc801 -> "8.0.1"
Ghc802 -> "8.0.2"
Ghc822 -> "8.2.2"
Ghc843 -> "8.4.3"
parseGhcVer :: Text -> Maybe GhcVer
parseGhcVer = inverseMap showGhcVer
latestLts :: GhcVer -> Text
latestLts = \case
Ghc7103 -> "6.35"
Ghc801 -> "7.24"
Ghc802 -> "9.21"
Ghc822 -> "11.22"
Ghc843 -> "12.7"
baseVer :: GhcVer -> Text
baseVer = \case
Ghc7103 -> "4.8.0.2"
Ghc801 -> "4.9.0.0"
Ghc802 -> "4.9.1.0"
Ghc822 -> "4.10.1.0"
Ghc843 -> "4.11.1.0"