52 lines
1.2 KiB
Haskell
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
|
|
|