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" #-}