ghcup-hs/lib/GHCup/Types.hs

52 lines
1.2 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
module GHCup.Types where
import Data.Map.Strict (Map)
import Data.Strict.Maybe
import Data.Text
import Data.Version
import Network.URL
import Prelude hiding (
Maybe
, Just
, Nothing)
import qualified GHC.Generics as GHC
-- | Requested tool to be installed. User input.
data Tool = GHC
| Cabal
| Stack
deriving (Eq, Ord, Show)
-- | Architecture we run on.
data Architecture = A_64
| A_32
deriving (Eq, Ord, Show)
data LinuxDistro = Debian (Maybe CustomVersion)
| Ubuntu (Maybe CustomVersion)
| Mint (Maybe CustomVersion)
| Fedora (Maybe CustomVersion)
-- not known
| UnknownLinux
-- ^ must exit
deriving (Eq, GHC.Generic, Ord, Show)
data Platform = Linux LinuxDistro
-- ^ must exit
| Darwin
-- ^ must exit
| FreeBSD (Maybe CustomVersion)
deriving (Eq, GHC.Generic, Ord, Show)
type CustomVersion = Text
type PlatformSpec = Map Platform URL
type ArchitectureSpec = Map Architecture PlatformSpec
type VersionSpec = Map Version ArchitectureSpec
type AvailableDownloads = Map Tool VersionSpec