{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
module Distribution.CabalSpecVersion where
import Prelude ()
import Distribution.Compat.Prelude
data CabalSpecVersion
= CabalSpecV1_0
| CabalSpecV1_2
| CabalSpecV1_4
| CabalSpecV1_6
| CabalSpecV1_8
| CabalSpecV1_10
| CabalSpecV1_12
| CabalSpecV1_18
| CabalSpecV1_20
| CabalSpecV1_22
| CabalSpecV1_24
| CabalSpecV2_0
| CabalSpecV2_2
| CabalSpecV2_4
| CabalSpecV3_0
deriving (Eq, Ord, Show, Read, Enum, Bounded, Typeable, Data, Generic)
showCabalSpecVersion :: CabalSpecVersion -> String
showCabalSpecVersion CabalSpecV3_0 = "3.0"
showCabalSpecVersion CabalSpecV2_4 = "2.4"
showCabalSpecVersion CabalSpecV2_2 = "2.2"
showCabalSpecVersion CabalSpecV2_0 = "2.0"
showCabalSpecVersion CabalSpecV1_24 = "1.24"
showCabalSpecVersion CabalSpecV1_22 = "1.22"
showCabalSpecVersion CabalSpecV1_20 = "1.20"
showCabalSpecVersion CabalSpecV1_18 = "1.18"
showCabalSpecVersion CabalSpecV1_12 = "1.12"
showCabalSpecVersion CabalSpecV1_10 = "1.10"
showCabalSpecVersion CabalSpecV1_8 = "1.8"
showCabalSpecVersion CabalSpecV1_6 = "1.6"
showCabalSpecVersion CabalSpecV1_4 = "1.4"
showCabalSpecVersion CabalSpecV1_2 = "1.2"
showCabalSpecVersion CabalSpecV1_0 = "1.0"
cabalSpecLatest :: CabalSpecVersion
cabalSpecLatest = CabalSpecV3_0
cabalSpecFromVersionDigits :: [Int] -> CabalSpecVersion
cabalSpecFromVersionDigits v
| v >= [2,5] = CabalSpecV3_0
| v >= [2,3] = CabalSpecV2_4
| v >= [2,1] = CabalSpecV2_2
| v >= [1,25] = CabalSpecV2_0
| v >= [1,23] = CabalSpecV1_24
| v >= [1,21] = CabalSpecV1_22
| v >= [1,19] = CabalSpecV1_20
| v >= [1,17] = CabalSpecV1_18
| v >= [1,11] = CabalSpecV1_12
| v >= [1,9] = CabalSpecV1_10
| v >= [1,7] = CabalSpecV1_8
| v >= [1,5] = CabalSpecV1_6
| v >= [1,3] = CabalSpecV1_4
| v >= [1,1] = CabalSpecV1_2
| otherwise = CabalSpecV1_0
specHasCommonStanzas :: CabalSpecVersion -> HasCommonStanzas
specHasCommonStanzas v =
if v >= CabalSpecV2_2
then HasCommonStanzas
else NoCommonStanzas
specHasElif :: CabalSpecVersion -> HasElif
specHasElif v =
if v >= CabalSpecV2_2
then HasElif
else NoElif
data HasElif = HasElif | NoElif
deriving (Eq, Show)
data HasCommonStanzas = HasCommonStanzas | NoCommonStanzas
deriving (Eq, Show)
data HasGlobstar = HasGlobstar | NoGlobstar