stack-3.7.1: src/Stack/Options/InitParser.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-|
Module : Stack.Options.InitParser
Description : Parse arguments for Stack's @init@ and @new@ commands.
License : BSD-3-Clause
Functions to parse command line arguments for Stack's @init@ and @new@ commands.
-}
module Stack.Options.InitParser
( initOptsParser
) where
import Options.Applicative
( Parser, completer, help, long, metavar, switch )
import Options.Applicative.Builder.Extra
( dirCompleter, textArgument )
import Stack.Init ( InitOpts (..) )
import Stack.Prelude
-- | Parse command line arguments for Stack's @init@ and @new@ commands.
initOptsParser :: Parser InitOpts
initOptsParser = InitOpts
<$> searchDirs
<*> omitPackages
<*> overwrite
<*> fmap not ignoreSubDirs
where
searchDirs = many (textArgument
( metavar "DIR(S)"
<> completer dirCompleter
<> help "Directory, or directories, to include in the search for Cabal \
\files, when initialising. The default is the current directory."
))
ignoreSubDirs = switch
( long "ignore-subdirs"
<> help "Do not search for Cabal files in subdirectories, when \
\initialising."
)
overwrite = switch
( long "force"
<> help "Force an initialisation that overwrites any existing stack.yaml \
\file."
)
omitPackages = switch
( long "omit-packages"
<> help "Exclude conflicting or incompatible user packages, when \
\initialising."
)