{-# LANGUAGE NoImplicitPrelude #-}
module Stack.Options.GhcVariantParser where
import Options.Applicative
import Options.Applicative.Types (readerAsk)
import Stack.Prelude
import Stack.Options.Utils
import Stack.Types.Config
ghcVariantParser :: Bool -> Parser GHCVariant
ghcVariantParser :: Bool -> Parser GHCVariant
ghcVariantParser Bool
hide = forall a. ReadM a -> Mod OptionFields a -> Parser a
option ReadM GHCVariant
readGHCVariant
( forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"ghc-variant"
forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. HasMetavar f => String -> Mod f a
metavar String
"VARIANT"
forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
help String
"Specialized GHC variant, e.g. int-native or integersimple \
\(incompatible with --system-ghc)"
forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Bool -> Mod f a
hideMods Bool
hide
)
where
readGHCVariant :: ReadM GHCVariant
readGHCVariant = do
String
s <- ReadM String
readerAsk
case forall (m :: * -> *). MonadThrow m => String -> m GHCVariant
parseGHCVariant String
s of
Left SomeException
e -> forall a. String -> ReadM a
readerError (forall a. Show a => a -> String
show SomeException
e)
Right GHCVariant
v -> forall (m :: * -> *) a. Monad m => a -> m a
return GHCVariant
v