simple-get-opt-0.1.0.0: A simple library for processing command-line options.

Safe HaskellSafe-Inferred
LanguageHaskell2010

SimpleGetOpt

Contents

Description

Provides support for processing command-line arguments. This is a simple wrapper around get-opt. Here is an example of a typical usage:

data Settings = Settings
  { verbose :: Bool
  , inPar   :: Int
  , files   :: [String]
  }

options :: OptSpec Settings
options = OptSpec
  { progDefaults = Settings { verbose = False
                            , inPar   = 1
                            , files   = []
                            }

  , progOptions =
      [ Option ['v'] ["verbose"]
        "Display more information while working."
        $ NoArg $ \s -> Right s { verbose = True }

      , Option ['p'] ["par"]
        "Process that many files at once."
        $ ReqArg "NUM" $ \a s ->
          case readMaybe a of
            Just n | n > 0  -> Right s { inPar = n }
            _               -> Left "Invalid value for `par`"
      ]

  , progParamDocs =
      [ ("FILES",   "The files that need processing.") ]

  , progParams = \p s -> Right s { files = p : files s }
  }

Here is what the usage information looks like:

*Main> dumpUsage options 
Parameters:
  FILES    The files that need processing.

Flags:
  -v      --verbose  Display more information while working.
  -p NUM  --par=NUM  Process that many files at once.

Synopsis

Basic functionality

getOpts :: OptSpec a -> IO a Source

Get the command-line options and process them according to the given spec. The options will be permuted to get flags.

data OptSpec a Source

Specification of a collection of options, described by type a.

Constructors

OptSpec 

Fields

progDefaults :: a

Default options. This is what is used if no other options are provided.

progOptions :: [OptDescr a]

A list of options and command-line flags.

progParamDocs :: [(String, String)]

Documentatio for the free-form parameters.

progParams :: String -> OptSetter a

Add a parameter that is not an option or a flag (i.e., this is just a free form command line parameter).

data OptDescr a Source

Describe an option.

type OptSetter a = a -> Either String a Source

Manipulate options of type a, with support for errors.

data ArgDescr a Source

Describe an option argumnet.

Constructors

NoArg (OptSetter a)

This option does not take an argument.

ReqArg String (String -> OptSetter a)

This optoin has a required arugment. The string describes the type of the argument.

OptArg String (Maybe String -> OptSetter a)

This optoin has an optional arugment. The string describes the type of the argument.

Information and error reporting.

dumpUsage :: OptSpec a -> IO () Source

Show the program's usage information on stderr.

reportUsageError :: OptSpec a -> [String] -> IO b Source

Print the given messages on stderr and show the program's usage info.

usageString :: OptSpec a -> String Source

A string descibing the options.