parseargs-0.2.0.9: Parse command-line arguments

Copyright (c) 2007 Bart Massey BSD-style (see the file COPYING) Bart Massey stable portable Safe Haskell98

System.Console.ParseArgs

Description

ParseArgs is a full-featured command-line argument parsing library.

This module supplies an argument parser. Given a description of type [Arg] of the legal arguments to the program, a list of argument strings, and a bit of extra information, the parseArgs function in this module returns an Args data structure suitable for querying using the provided functions gotArg, getArg, etc.

Synopsis

# Describing allowed arguments

The argument parser requires a description of the arguments that will be parsed. This is supplied as a list of Arg records, built up using the functions described here.

data Ord a => Arg a Source #

The description of an argument, suitable for messages and for parsing. The argData field is used both for flags with a data argument, and for positional data arguments.

There are two cases:

1. The argument is a flag, in which case at least one of argAbbr and argName is provided;
2. The argument is positional, in which case neither argAbbr nor argName are provided, but argData is.

If none of argAbbr, argName, or argData are provided, this is an error. See also the argDataRequired, argDataOptional, and argDataDefaulted functions below, which are used to generate argData.

Constructors

 Arg FieldsargIndex :: aConnects the input description to the output argument.argAbbr :: Maybe CharOne-character flag name.argName :: Maybe String"Long name" of flag.argData :: Maybe DataArgDatum description.argDesc :: StringDocumentation for the argument.

data Argtype Source #

The types of an argument carrying data. The constructor argument is used to carry a default value.

The constructor argument should really be hidden. Values of this type are normally constructed within the pseudo-constructors pseudo-constructors argDataRequired, argDataOptional, and argDataDefaulted, to which only the constructor function itself is passed.

Constructors

 ArgtypeString (Maybe String) ArgtypeInteger (Maybe Integer) ArgtypeInt (Maybe Int) ArgtypeDouble (Maybe Double) ArgtypeFloat (Maybe Float)

How "sloppy" the parse is.

Constructors

 ArgsComplete Any extraneous arguments (unparseable from description) will cause the parser to fail. ArgsTrailing String Trailing extraneous arguments are permitted, and will be skipped, saved, and returned. The constructor argument is the name of the args. ArgsInterspersed All extraneous arguments are permitted, and will be skipped, saved, and returned.
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs Methods

data ArgsDash Source #

Whether to always treat an unknown argument beginning with "-" as an error, or to allow it to be used as a positional argument when possible.

Constructors

 ArgsHardDash If an argument begins with a "-", it will always be treated as an error unless it corresponds to a flag description. ArgsSoftDash If an argument beginning with a "-" is unrecognized as a flag, treat it as a positional argument if possible. Otherwise it is an error.
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs Methods

class APCData a where Source #

Class for building parse control information, for backward compatibility.

Methods

Arguments

 :: a -> ArgsParseControl Build an ArgsParseControl structure from the given info.
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs Methods Source # Instance detailsDefined in System.Console.ParseArgs Methods

Record containing the collective parse control information.

Constructors

 ArgsParseControl FieldsapcComplete :: ArgsCompleteLevel of completeness of parse.apcDash :: ArgsDashHandling of dashes in parse.
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs Methods

## DataArg and its pseudo-constructors

data DataArg Source #

Information specific to an argument carrying a datum. This is an opaque type, whose instances are constructed using the pseudo-constructors argDataRequired, argDataOptional, and argDataDefaulted.

Arguments

 :: String Datum print name. -> (Maybe a -> Argtype) Type constructor for datum. -> Maybe DataArg Result is argData-ready.

Generate the argData for the given non-optional argument.

Arguments

 :: String Datum print name. -> (Maybe a -> Argtype) Type constructor for datum. -> Maybe DataArg Result is argData-ready.

Generate the argData for the given optional argument with no default.

Arguments

 :: String Datum print name. -> (Maybe a -> Argtype) Type constructor for datum. -> a Datum default value. -> Maybe DataArg Result is argData-ready.

Generate the argData for the given optional argument with the given default.

# Argument processing

The argument descriptions are used to parse the command line arguments, and the results of the parse can later be (efficiently) queried to determine program behavior.

## Getting parse results

The argument parser returns an opaque map from argument index to parsed argument data (plus some convenience information).

data Ord a => Args a Source #

The data structure parseArgs produces. There is a should-be-hidden field that describes the parse.

Constructors

 Args Fields__args :: ArgRecord aThe argument parse, only listed here to work around a Haddock bug. See https://github.com/haskell/haddock/issues/456.argsProgName :: StringBasename of 0th argument.argsUsage :: StringFull usage string.argsRest :: [String]Remaining unprocessed arguments.

Arguments

 :: (Show a, Ord a, APCData b) => b Configuration for parse. -> [Arg a] Argument descriptions. -> String Full program pathname. -> [String] Incoming program argument list. -> Args a Outgoing argument parse results.

Given a description of the arguments, parseArgs produces a map from the arguments to their "values" and some other useful byproducts. parseArgs requires that the argument descriptions occur in the order 1) flag arguments, then 2) positional arguments; otherwise a runtime error will be thrown.

Arguments

 :: (Show a, Ord a, APCData b) => b Degree of completeness of parse. -> [Arg a] Argument descriptions. -> IO (Args a) Argument parse results.

Most of the time, you just want the environment's arguments and are willing to live in the IO monad. This version of parseArgs digs the pathname and arguments out of the system directly.

## Using parse results

Query functions permit checking for the existence and values of command-line arguments.

Arguments

 :: Ord a => Args a Parsed arguments. -> a Index of argument to be checked for. -> Bool True if the arg was present.

Check whether a given optional argument was supplied. Works on all types.

class ArgType b where Source #

Type of values that can be parsed by the argument parser.

Minimal complete definition

getArg

Methods

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe b Argument value if present.

Fetch an argument's value if it is present.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> b Argument value.

Fetch the value of a required argument.

Instances
 Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe Double Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> Double Source # Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe Float Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> Float Source # Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe Int Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> Int Source # Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe Integer Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> Integer Source # ArgType () Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe () Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> () Source # Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe ArgFileOpener Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> ArgFileOpener Source # Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe [Char] Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> [Char] Source #

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe String Argument value if present.
Deprecated
Return the String value, if any, of the given argument.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> IOMode IO mode the file should be opened in. -> IO (Maybe Handle) Handle of opened file, if the argument was present.
Deprecated
Treat the String value, if any, of the given argument as a file handle and try to open it as requested.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> IOMode IO mode the file should be opened in. Must not be ReadWriteMode. -> IO Handle Appropriate file handle.

Treat the String value, if any, of the given argument as a file handle and try to open it as requested. If not present, substitute the appropriate one of stdin or stdout as indicated by IOMode.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe Integer Argument value if present.
Deprecated
Return the Integer value, if any, of the given argument.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe Int Argument value if present.
Deprecated
Return the Int value, if any, of the given argument.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe Double Argument value if present.
Deprecated
Return the Double value, if any, of the given argument.

Arguments

 :: (Show a, Ord a) => Args a Parsed arguments. -> a Index of argument to be retrieved. -> Maybe Float Argument value if present.
Deprecated
Return the Float value, if any, of the given argument.

newtype ArgFileOpener Source #

ArgType instance for opening a file from its string name.

Constructors

 ArgFileOpener FieldsargFileOpener :: IOMode -> IO HandleFunction to open the file
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs MethodsgetArg :: (Show a, Ord a) => Args a -> a -> Maybe ArgFileOpener Source #getRequiredArg :: (Show a, Ord a) => Args a -> a -> ArgFileOpener Source #

# Misc

This exception is raised with an appropriate error message when argument parsing fails. The first argument is the usage message, the second the actual error message from the parser.

Constructors

 ParseArgsException String String
Instances
 Source # Instance detailsDefined in System.Console.ParseArgs Methods Source # Instance detailsDefined in System.Console.ParseArgs MethodsshowList :: [ParseArgsException] -> ShowS # Source # Instance detailsDefined in System.Console.ParseArgs Methods

Arguments

 :: String Pathname. -> String Rightmost component of pathname.

Return the filename part of a pathname. Unnecessarily efficient implementation does a single tail-call traversal with no construction.

Arguments

 :: String Usage message. -> String Specific error message. -> a Bogus polymorphic result.

Generate a usage error with the given supplementary message string.

usageError :: Ord a => Args a -> String -> b Source #

Generate a usage error with the given supplementary message string.

data IOMode #

See openFile

Constructors