47 lines
1.5 KiB
Haskell
47 lines
1.5 KiB
Haskell
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
|
||
|
module GHCup.Requirements where
|
||
|
|
||
|
import GHCup.Types
|
||
|
import GHCup.Types.JSON ( )
|
||
|
import GHCup.Types.Optics
|
||
|
|
||
|
import Control.Applicative
|
||
|
import Data.Maybe
|
||
|
import Optics
|
||
|
import Prelude hiding ( abs
|
||
|
, readFile
|
||
|
, writeFile
|
||
|
)
|
||
|
|
||
|
import qualified Data.Text as T
|
||
|
|
||
|
|
||
|
-- | Get the requirements. Right now this combines GHC and cabal
|
||
|
-- and doesn't do fine-grained distinction. However, the 'ToolRequirements'
|
||
|
-- type allows it.
|
||
|
getCommonRequirements :: PlatformResult
|
||
|
-> ToolRequirements
|
||
|
-> Maybe Requirements
|
||
|
getCommonRequirements pr tr =
|
||
|
preview (ix GHC % ix Nothing % ix (_platform pr) % ix (_distroVersion pr)) tr
|
||
|
<|> preview (ix GHC % ix Nothing % ix (_platform pr) % ix Nothing) tr
|
||
|
<|> preview
|
||
|
( ix GHC
|
||
|
% ix Nothing
|
||
|
% ix (set _Linux UnknownLinux $ _platform pr)
|
||
|
% ix Nothing
|
||
|
)
|
||
|
tr
|
||
|
|
||
|
|
||
|
prettyRequirements :: Requirements -> T.Text
|
||
|
prettyRequirements Requirements {..} =
|
||
|
let d = if not . null $ _distroPKGs
|
||
|
then
|
||
|
"\n Install the following distro packages: "
|
||
|
<> T.intercalate " " _distroPKGs
|
||
|
else ""
|
||
|
n = if not . T.null $ _notes then "\n Note: " <> _notes else ""
|
||
|
in "System requirements " <> d <> n
|