module Options.Applicative (
-- * Applicative option parsers
--
-- | This module exports all one should need for defining and using
-- optparse-applicative command line option parsers.
--
-- See <https://github.com/pcapriotti/optparse-applicative> for a tutorial,
-- and a general introduction to applicative option parsers.
--
-- See the sections below for more detail
-- * Exported modules
--
-- | The standard @Applicative@ module is re-exported here for convenience.
module Control.Applicative,
-- * Option Parsers
--
-- | A 'Parser' is the core type in optparse-applicative. A value of type
-- @Parser a@ represents a specification for a set of options, which will
-- yield a value of type a when the command line arguments are successfully
-- parsed.
--
-- There are several types of primitive 'Parser'.
--
-- * Flags: simple no-argument options. When a flag is encountered on the
-- command line, its value is returned.
--
-- * Options: options with an argument. An option can define a /reader/,
-- which converts its argument from String to the desired value, or throws a
-- parse error if the argument does not validate correctly.
--
-- * Arguments: positional arguments, validated in the same way as option
-- arguments.
--
-- * Commands. A command defines a completely independent sub-parser. When a
-- command is encountered, the whole command line is passed to the
-- corresponding parser.
--
-- See the "Parser Builders" section for how to construct and customise
-- these parsers.
Parser,
-- ** Parser builders
--
-- | This section contains utility functions and combinators to create parsers
-- for individual options.
--
-- Each parser builder takes an option modifier. A modifier can be created by
-- composing the basic modifiers provided by here using the 'Monoid' operations
-- 'mempty' and 'mappend', or their aliases 'idm' and '<>'.
--
-- For example:
--
-- > out = strOption
-- > ( long "output"
-- > <> short 'o'
-- > <> metavar "FILENAME" )
--
-- creates a parser for an option called \"output\".
flag,
flag',
switch,
strOption,
option,
strArgument,
argument,
subparser,
hsubparser,
abortOption,
infoOption,
helper,
-- ** Modifiers
--
-- | 'Parser' builders take a modifier, which represents a modification of the
-- properties of an option, and can be composed as a monoid.
--
-- Contraints are often used to ensure that the modifiers can be sensibly applied.
-- For example, positional arguments can't be specified by long or short names,
-- so the 'HasName' constraint is used to ensure we have a flag or option.
Mod,
short,
long,
help,
helpDoc,
value,
showDefaultWith,
showDefault,
metavar,
noArgError,
hidden,
internal,
style,
command,
commandGroup,
completeWith,
action,
completer,
idm,
mappend,
OptionFields,
FlagFields,
ArgumentFields,
CommandFields,
-- ** Readers
--
-- | A reader is used by the 'option' and 'argument' builders to parse
-- the data passed by the user on the command line into a data type.
--
-- The most common are 'str' which is used for 'String' like types,
-- including 'ByteString' and 'Text'; and 'auto', which uses the 'Read'
-- typeclass, and is good for simple types like 'Int' or 'Double'.
--
-- More complex types can use the 'eitherReader' or 'maybeReader'
-- functions to pattern match or use a more expressive parser like a
-- member of the 'Parsec' family.
ReadM,
auto,
str,
maybeReader,
eitherReader,
disabled,
readerAbort,
readerError,
-- * Program descriptions
--
-- ** 'ParserInfo'
--
-- | A 'ParserInfo' describes a command line program, used to generate a help
-- screen. Two help modes are supported: brief and full. In brief mode, only
-- an option and argument summary is displayed, while in full mode each
-- available option and command, including hidden ones, is described.
--
-- A 'ParserInfo' should be created with the 'info' function and a set of
-- 'InfoMod' modifiers.
--
info,
ParserInfo(..),
InfoMod,
fullDesc,
briefDesc,
header,
headerDoc,
footer,
footerDoc,
progDesc,
progDescDoc,
failureCode,
noIntersperse,
forwardOptions,
-- * Running parsers
--
-- | The execParser family of functions are used to run parsers
execParser,
customExecParser,
execParserPure,
-- ** Handling parser results manually
getParseResult,
handleParseResult,
parserFailure,
renderFailure,
overFailure,
-- ** 'ParserPrefs'
--
-- | A 'ParserPrefs' contains general preferences for all command-line
-- options, and should be built with the 'prefs' function.
prefs,
ParserPrefs(..),
PrefsMod,
multiSuffix,
disambiguate,
showHelpOnError,
showHelpOnEmpty,
noBacktrack,
columns,
defaultPrefs,
-- * Completions
--
-- | optparse-applicative supplies a rich completion system for bash,
-- zsh, and fish shells.
--
-- 'Completer' functions are used for option and argument to complete
-- their values.
--
-- Use the 'completer' builder to use these.
-- The 'action' and 'completeWith' builders are also provided for
-- convenience, to use 'bashCompleter' and 'listCompleter' as a 'Mod'.
Completer,
mkCompleter,
listIOCompleter,
listCompleter,
bashCompleter,
-- * Types
ParseError(..),
ParserHelp(..),
ParserFailure(..),
ParserResult(..),
CompletionResult(..)
) where
-- reexport Applicative here for convenience
import Control.Applicative
import Options.Applicative.Common
import Options.Applicative.Builder
import Options.Applicative.Builder.Completer
import Options.Applicative.Extra
import Options.Applicative.Types
{-# ANN module "HLint: ignore Use import/export shortcut" #-}