{-# 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