{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE DataKinds #-} module Stack.Options.ResolverParser where import qualified Data.Text as T import Options.Applicative import Options.Applicative.Types (readerAsk) import Stack.Options.Utils import Stack.Prelude import Stack.Types.Resolver -- | Parser for the resolver abstractResolverOptsParser :: Bool -> Parser (Unresolved AbstractResolver) abstractResolverOptsParser hide = option readAbstractResolver (long "resolver" <> metavar "RESOLVER" <> help "Override resolver in project file" <> hideMods hide) compilerOptsParser :: Bool -> Parser WantedCompiler compilerOptsParser hide = option readCompilerVersion (long "compiler" <> metavar "COMPILER" <> help "Use the specified compiler" <> hideMods hide) readCompilerVersion :: ReadM WantedCompiler readCompilerVersion = do s <- readerAsk case parseWantedCompiler (T.pack s) of Left{} -> readerError $ "Failed to parse compiler: " ++ s Right x -> return x