haskell-options: An easy-to-use command-line option parser for Haskell

The options package lets library and application developers easily work with command-line options.

Code: https://john-millikin.com/code/haskell-options (GitHub mirror)

Examples

The following example is a full program that can accept two options, --message and --quiet:

import Control.Applicative import Options data MainOptions = MainOptions { optMessage :: String , optQuiet :: Bool } instance Options MainOptions where defineOptions = pure MainOptions <*> simpleOption "message" "Hello world!" "A message to show the user." <*> simpleOption "quiet" False "Whether to be quiet." main :: IO () main = runCommand $ \opts args -> do if optQuiet opts then return () else putStrLn (optMessage opts)

$ ./hello Hello world! $ ./hello --message='ciao mondo' ciao mondo $ ./hello --quiet $

In addition, this library will automatically create documentation options such as --help and --help-all:

$ ./hello --help Help Options: -h, --help Show option summary. --help-all Show all help options. Application Options: --message :: text A message to show the user. default: "Hello world!" --quiet :: bool Whether to be quiet. default: false
Change Feed