stack-3.1.1: src/Stack/Options/SnapshotParser.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE DataKinds #-}
module Stack.Options.SnapshotParser
( abstractSnapshotOptsParser
, compilerOptsParser
, readCompilerVersion
) where
import qualified Data.Text as T
import Options.Applicative
( Parser, ReadM, help, long, metavar, option, readerError )
import Options.Applicative.Types ( readerAsk )
import Stack.Options.Utils ( hideMods )
import Stack.Prelude
import Stack.Types.Snapshot ( AbstractSnapshot, readAbstractSnapshot )
-- | Parser for the snapshot
abstractSnapshotOptsParser :: Bool -> Parser (Unresolved AbstractSnapshot)
abstractSnapshotOptsParser hide = option readAbstractSnapshot
( long "snapshot"
<> long "resolver"
<> metavar "SNAPSHOT"
<> help "Override snapshot in the project configuration 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 -> pure x