{-# LANGUAGE NoImplicitPrelude #-}
module Stack.Types.Platform
( PlatformVariant (..)
, HasPlatform (..)
, platformVariantSuffix
, platformOnlyRelDir
) where
import Distribution.System ( Platform )
import Distribution.Text ( display )
import Lens.Micro ( _1, _2 )
import Path ( parseRelDir )
import Stack.Prelude
data PlatformVariant
= PlatformVariantNone
| PlatformVariant String
class HasPlatform env where
platformL :: Lens' env Platform
platformVariantL :: Lens' env PlatformVariant
instance HasPlatform (Platform, PlatformVariant) where
platformL :: Lens' (Platform, PlatformVariant) Platform
platformL = forall s t a b. Field1 s t a b => Lens s t a b
_1
platformVariantL :: Lens' (Platform, PlatformVariant) PlatformVariant
platformVariantL = forall s t a b. Field2 s t a b => Lens s t a b
_2
platformVariantSuffix :: PlatformVariant -> String
platformVariantSuffix :: PlatformVariant -> String
platformVariantSuffix PlatformVariant
PlatformVariantNone = String
""
platformVariantSuffix (PlatformVariant String
v) = String
"-" forall a. [a] -> [a] -> [a]
++ String
v
platformOnlyRelDir ::
(MonadReader env m, HasPlatform env, MonadThrow m)
=> m (Path Rel Dir)
platformOnlyRelDir :: forall env (m :: * -> *).
(MonadReader env m, HasPlatform env, MonadThrow m) =>
m (Path Rel Dir)
platformOnlyRelDir = do
Platform
platform <- forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view forall env. HasPlatform env => Lens' env Platform
platformL
PlatformVariant
platformVariant <- forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view forall env. HasPlatform env => Lens' env PlatformVariant
platformVariantL
forall (m :: * -> *). MonadThrow m => String -> m (Path Rel Dir)
parseRelDir
( forall a. Pretty a => a -> String
Distribution.Text.display Platform
platform
forall a. [a] -> [a] -> [a]
++ PlatformVariant -> String
platformVariantSuffix PlatformVariant
platformVariant
)