haskell@gentoo.org
Gentoo Haskell
The @options@ package lets library and application developers easily work
with command-line options.
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