module HaskellCI.Config.Ubuntu where

import HaskellCI.Prelude

import qualified Distribution.Parsec as C
import qualified Distribution.Pretty as C
import qualified Text.PrettyPrint    as PP

data Ubuntu = Xenial | Bionic | Focal | Jammy
  deriving (Ubuntu -> Ubuntu -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Ubuntu -> Ubuntu -> Bool
$c/= :: Ubuntu -> Ubuntu -> Bool
== :: Ubuntu -> Ubuntu -> Bool
$c== :: Ubuntu -> Ubuntu -> Bool
Eq, Eq Ubuntu
Ubuntu -> Ubuntu -> Bool
Ubuntu -> Ubuntu -> Ordering
Ubuntu -> Ubuntu -> Ubuntu
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Ubuntu -> Ubuntu -> Ubuntu
$cmin :: Ubuntu -> Ubuntu -> Ubuntu
max :: Ubuntu -> Ubuntu -> Ubuntu
$cmax :: Ubuntu -> Ubuntu -> Ubuntu
>= :: Ubuntu -> Ubuntu -> Bool
$c>= :: Ubuntu -> Ubuntu -> Bool
> :: Ubuntu -> Ubuntu -> Bool
$c> :: Ubuntu -> Ubuntu -> Bool
<= :: Ubuntu -> Ubuntu -> Bool
$c<= :: Ubuntu -> Ubuntu -> Bool
< :: Ubuntu -> Ubuntu -> Bool
$c< :: Ubuntu -> Ubuntu -> Bool
compare :: Ubuntu -> Ubuntu -> Ordering
$ccompare :: Ubuntu -> Ubuntu -> Ordering
Ord, Int -> Ubuntu -> ShowS
[Ubuntu] -> ShowS
Ubuntu -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Ubuntu] -> ShowS
$cshowList :: [Ubuntu] -> ShowS
show :: Ubuntu -> String
$cshow :: Ubuntu -> String
showsPrec :: Int -> Ubuntu -> ShowS
$cshowsPrec :: Int -> Ubuntu -> ShowS
Show, Int -> Ubuntu
Ubuntu -> Int
Ubuntu -> [Ubuntu]
Ubuntu -> Ubuntu
Ubuntu -> Ubuntu -> [Ubuntu]
Ubuntu -> Ubuntu -> Ubuntu -> [Ubuntu]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: Ubuntu -> Ubuntu -> Ubuntu -> [Ubuntu]
$cenumFromThenTo :: Ubuntu -> Ubuntu -> Ubuntu -> [Ubuntu]
enumFromTo :: Ubuntu -> Ubuntu -> [Ubuntu]
$cenumFromTo :: Ubuntu -> Ubuntu -> [Ubuntu]
enumFromThen :: Ubuntu -> Ubuntu -> [Ubuntu]
$cenumFromThen :: Ubuntu -> Ubuntu -> [Ubuntu]
enumFrom :: Ubuntu -> [Ubuntu]
$cenumFrom :: Ubuntu -> [Ubuntu]
fromEnum :: Ubuntu -> Int
$cfromEnum :: Ubuntu -> Int
toEnum :: Int -> Ubuntu
$ctoEnum :: Int -> Ubuntu
pred :: Ubuntu -> Ubuntu
$cpred :: Ubuntu -> Ubuntu
succ :: Ubuntu -> Ubuntu
$csucc :: Ubuntu -> Ubuntu
Enum, Ubuntu
forall a. a -> a -> Bounded a
maxBound :: Ubuntu
$cmaxBound :: Ubuntu
minBound :: Ubuntu
$cminBound :: Ubuntu
Bounded)

instance C.Parsec Ubuntu where
    parsec :: forall (m :: * -> *). CabalParsing m => m Ubuntu
parsec = do
        String
t <- forall (m :: * -> *). CabalParsing m => m String
C.parsecToken
        case String
t of
            String
"xenial" -> forall (m :: * -> *) a. Monad m => a -> m a
return Ubuntu
Xenial
            String
"bionic" -> forall (m :: * -> *) a. Monad m => a -> m a
return Ubuntu
Bionic
            String
"focal"  -> forall (m :: * -> *) a. Monad m => a -> m a
return Ubuntu
Focal
            String
"jammy"  -> forall (m :: * -> *) a. Monad m => a -> m a
return Ubuntu
Jammy
            String
_        -> forall (m :: * -> *) a. MonadFail m => String -> m a
fail forall a b. (a -> b) -> a -> b
$ String
"Unknown ubuntu release " forall a. [a] -> [a] -> [a]
++ String
t

instance C.Pretty Ubuntu where
    pretty :: Ubuntu -> Doc
pretty = String -> Doc
PP.text forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ubuntu -> String
showUbuntu

showUbuntu :: Ubuntu -> String
showUbuntu :: Ubuntu -> String
showUbuntu Ubuntu
Xenial = String
"xenial"
showUbuntu Ubuntu
Bionic = String
"bionic"
showUbuntu Ubuntu
Focal  = String
"focal"
showUbuntu Ubuntu
Jammy  = String
"jammy"