{-# LANGUAGE NoImplicitPrelude #-} module Stack.Options.GhcBuildParser ( ghcBuildParser ) where import Options.Applicative ( Parser, completeWith, help, long, metavar, option ) import Options.Applicative.Types ( readerAsk, readerError ) import Stack.Options.Utils ( hideMods ) import Stack.Prelude import Stack.Types.CompilerBuild ( CompilerBuild, parseCompilerBuild ) -- | GHC build parser ghcBuildParser :: Bool -> Parser CompilerBuild ghcBuildParser hide = option readGHCBuild ( long "ghc-build" <> metavar "BUILD" <> completeWith [ "standard" , "gmp4" , "nopie" , "tinfo6" , "tinfo6-libc6-pre232" , "tinfo6-nopie" , "ncurses6" , "int-native" , "integersimple" ] <> help "Specialized GHC build, e.g. 'gmp4' or 'standard' (usually \ \auto-detected)." <> hideMods hide ) where readGHCBuild = do s <- readerAsk case parseCompilerBuild s of Left e -> readerError (displayException e) Right v -> pure v