Module

Options.Applicative

Package
purescript-optparse
Repository
f-o-a-m/purescript-optparse

Re-exports from Options.Applicative.Builder

#Mod Source

data Mod f a

An option modifier.

Option modifiers are values that represent a modification of the properties of an option.

The type parameter @a@ is the pure type of the option, while @f@ is a record containing its properties (e.g. 'OptionFields' for regular options, 'FlagFields' for flags, etc...).

An option modifier consists of 3 elements:

  • A field modifier, of the form @f a -> f a@. These are essentially (compositions of) setters for some of the properties supported by @f@.

  • An optional default value and function to display it.

  • A property modifier, of the form @OptProperties -> OptProperties@. This is just like the field modifier, but for properties applicable to any option.

Modifiers are instances of 'Monoid', and can be composed as such.

One rarely needs to deal with modifiers directly, as most of the times it is sufficient to pass them to builders (such as 'strOption' or 'flag') to create options (see 'Options.Applicative.Builder').

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.

Instances

#InfoMod Source

newtype InfoMod a

Modifier for 'ParserInfo'.

Instances

#FlagFields Source

#value Source

value :: forall a f. HasValue f => a -> Mod f a

Specify a default value for an option.

#switch Source

switch :: Mod FlagFields Boolean -> Parser Boolean

Builder for a boolean flag.

#subparserInline Source

subparserInline :: PrefsMod

Allow full mixing of subcommand and parent arguments by inlining

#subparser Source

subparser :: forall a. Mod CommandFields a -> Parser a

Builder for a command parser. The 'command' modifier can be used to

#style Source

style :: forall a f. (Doc -> Doc) -> Mod f a

Apply a function to the option description in the usage text.

#strOption Source

strOption :: Mod OptionFields String -> Parser String

Builder for an option taking a 'String' argument.

#strArgument Source

strArgument :: Mod ArgumentFields String -> Parser String

Builder for a 'String' argument.

#str Source

str :: ReadM String

String 'Option' reader.

#showHelpOnError Source

showHelpOnError :: PrefsMod

Show full help text on any error.

#showHelpOnEmpty Source

showHelpOnEmpty :: PrefsMod

Show the help text if the user enters only the program name or

#showDefaultWith Source

showDefaultWith :: forall a f. (a -> String) -> Mod f a

Specify a function to show the default value for an option.

#showDefault Source

showDefault :: forall a f. Show a => Mod f a

Show the default value for this option using its 'Show' instance.

#short Source

short :: forall a f. HasName f => Char -> Mod f a

Specify a short name for an option.

#progDescDoc Source

progDescDoc :: forall a. Maybe Doc -> InfoMod a

Specify a short program description as a 'Text.PrettyPrint.ANSI.Leijen.Doc'

#progDesc Source

progDesc :: forall a. String -> InfoMod a

Specify a short program description.

#prefs Source

prefs :: PrefsMod -> ParserPrefs

Create a ParserPrefs given a modifier

#option Source

option :: forall a. ReadM a -> Mod OptionFields a -> Parser a

Builder for an option using the given reader.

#number Source

number :: ReadM Number

Number 'Option' reader.

#noIntersperse Source

noIntersperse :: forall a. InfoMod a

Disable parsing of regular options after arguments. After a positional

#noBacktrack Source

noBacktrack :: PrefsMod

Turn off backtracking after subcommand is parsed.

#noArgError Source

noArgError :: forall a. ParseError -> Mod OptionFields a

Specify the error to display when no argument is provided to this option.

#multiSuffix Source

multiSuffix :: String -> PrefsMod

Include a suffix to attach to the metavar when multiple values

#metavar Source

metavar :: forall a f. HasMetavar f => String -> Mod f a

Specify a metavariable for the argument.

#maybeReader Source

maybeReader :: forall a. (String -> Maybe a) -> ReadM a

Convert a function producing a 'Maybe' into a reader.

#long Source

long :: forall a f. HasName f => String -> Mod f a

Specify a long name for an option.

#internal Source

internal :: forall a f. Mod f a

Hide this option from the help text

#int Source

int :: ReadM Int

Int 'Option' reader.

#infoOption Source

infoOption :: forall a. String -> Mod OptionFields (a -> a) -> Parser (a -> a)

An option that always fails and displays a message.

#info Source

info :: forall a. Parser a -> InfoMod a -> ParserInfo a

Create a 'ParserInfo' given a 'Parser' and a modifier.

#idm Source

idm :: forall m. Monoid m => m

Trivial option modifier.

#hidden Source

hidden :: forall a f. Mod f a

Hide this option from the brief description.

#helpDoc Source

helpDoc :: forall a f. Maybe Doc -> Mod f a

Specify the help text for an option as a 'Text.PrettyPrint.ANSI.Leijen.Doc'

#help Source

help :: forall f a. String -> Mod f a

Specify the help text for an option.

#headerDoc Source

headerDoc :: forall a. Maybe Doc -> InfoMod a

Specify a header for this parser as a 'Text.PrettyPrint.ANSI.Leijen.Doc'

#header Source

header :: forall a. String -> InfoMod a

Specify a header for this parser.

#fullDesc Source

fullDesc :: forall a. InfoMod a

Show a full description in the help text of this parser.

#forwardOptions Source

forwardOptions :: forall a. InfoMod a

Intersperse matched options and arguments normally, but allow unmatched

#footerDoc Source

footerDoc :: forall a. Maybe Doc -> InfoMod a

Specify a footer for this parser as a 'Text.PrettyPrint.ANSI.Leijen.Doc'

#footer Source

footer :: forall a. String -> InfoMod a

Specify a footer for this parser.

#flag' Source

flag' :: forall a. a -> Mod FlagFields a -> Parser a

Builder for a flag parser without a default value.

#flag Source

flag :: forall a. a -> a -> Mod FlagFields a -> Parser a

Builder for a flag parser.

#failureCode Source

failureCode :: forall a. ExitCode -> InfoMod a

Specify an exit code if a parse error occurs.

#eitherReader Source

eitherReader :: forall a. (String -> Either String a) -> ReadM a

Convert a function producing an 'Either' into a reader.

#disambiguate Source

disambiguate :: PrefsMod

Turn on disambiguation.

#disabled Source

disabled :: forall a. ReadM a

Null 'Option' reader. All arguments will fail validation.

#defaultPrefs Source

defaultPrefs :: ParserPrefs

Default preferences.

#completer Source

completer :: forall a f. HasCompleter f => Completer -> Mod f a

Add a completer to an argument.

#completeWith Source

completeWith :: forall a f. HasCompleter f => Array String -> Mod f a

Add a list of possible completion values.

#commandGroup Source

commandGroup :: forall a. String -> Mod CommandFields a

Add a description to a group of commands.

#command Source

command :: forall a. String -> ParserInfo a -> Mod CommandFields a

Add a command to a subparser option.

#columns Source

columns :: Int -> PrefsMod

Set the maximum width of the generated help text.

#briefDesc Source

briefDesc :: forall a. InfoMod a

Only show a brief description in the help text of this parser.

#boolean Source

boolean :: ReadM Boolean

Boolean 'Option' reader.

#argument Source

argument :: forall a. ReadM a -> Mod ArgumentFields a -> Parser a

Builder for an argument parser.

#action Source

action :: forall a f. HasCompleter f => String -> Mod f a

Add a bash completion action. Common actions include @file@ and

#abortOption Source

abortOption :: forall a. ParseError -> Mod OptionFields (a -> a) -> Parser (a -> a)

An option that always fails.

Re-exports from Options.Applicative.Builder.Completer

#listIOCompleter Source

listIOCompleter :: Effect (Array String) -> Completer

Create a 'Completer' from an IO action

#listCompleter Source

listCompleter :: (Array String) -> Completer

Create a 'Completer' from a constant

#bashCompleter Source

bashCompleter :: String -> Completer

Run a compgen completion action.

Re-exports from Options.Applicative.Extra

#parserFailure Source

parserFailure :: forall a. ParserPrefs -> ParserInfo a -> ParseError -> Array Context -> ParserFailure ParserHelp

Generate a ParserFailure from a ParseError in a given Context.

#hsubparser Source

hsubparser :: forall a. Mod CommandFields a -> Parser a

Builder for a command parser with a "helper" option attached.

#helper Source

helper :: forall a. Parser (a -> a)

A hidden "helper" option which always fails.

#handleParseResult Source

handleParseResult :: forall a. ParserResult a -> Effect a

Handle ParserResult.

#getParseResult Source

getParseResult :: forall a. ParserResult a -> Maybe a

Extract the actual result from a ParserResult value.

#execParserPure Source

execParserPure :: forall a. ParserPrefs -> ParserInfo a -> Array String -> ParserResult a

The most general way to run a program description in pure code.

#execParser Source

execParser :: forall a. ParserInfo a -> Effect a

Run a program description.

#customExecParser Source

customExecParser :: forall a. ParserPrefs -> ParserInfo a -> Effect a

Run a program description with custom preferences.

Re-exports from Options.Applicative.Internal.Utils

#(<**>) Source

Operator alias for Options.Applicative.Internal.Utils.apApplyFlipped (left-associative / precedence 4)

Re-exports from Options.Applicative.Types

#ReadM Source

newtype ReadM a

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', there are readers for Int, Number, Boolean.

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. A newtype over 'ReaderT String Except', used by option readers.

Instances

#ParserPrefs Source

newtype ParserPrefs

Global preferences for a top-level 'Parser'. A 'ParserPrefs' contains general preferences for all command-line options, and can be built with the 'prefs' function.

Constructors

Instances

#ParserInfo Source

newtype ParserInfo a

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 basic 'ParserInfo' with default values for fields can be created using the 'info' function.

Constructors

Instances

#ParserHelp Source

newtype ParserHelp

Constructors

Instances

#Parser Source

data Parser a

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.

** Parser builders

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 'append', or their aliases 'idm' and '<>'.

For example:

out = strOption ( long "output" <> short 'o' <> metavar "FILENAME" )

creates a parser for an option called "output".

Instances

#CompletionResult Source

#Completer Source

newtype Completer

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'.

Instances

#some Source

some :: forall a. Parser a -> Parser (List a)

#readerError Source

readerError :: forall a. String -> ReadM a

Abort option reader by exiting with an error message.

#readerAbort Source

readerAbort :: forall a. ParseError -> ReadM a

Abort option reader by exiting with a 'ParseError'.

#overFailure Source

#mkCompleter Source

mkCompleter :: (String -> Effect (Array String)) -> Completer

Smart constructor for a 'Completer'

#many Source

many :: forall a. Parser a -> Parser (List a)