The options
package lets library and application developers easily work with command-line options.
Code: https://john-millikin.com/code/haskell-options (GitHub mirror)
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