OptEnvConf

Status

Ready to try out, Used in production

Goals

  • Parse command-line arguments, environment variables, and configuration values all together.
  • Self-documenting parsers for correct-by-construction documentation
  • Best-in-class command-line autocompletion
  • Best-in-class errors
  • Formatter-friendly API

Features

  • Parsing
    • Argument: progname hello
    • Option: progname --file foo.txt
      • Long Option: progname --file foo.txt
      • Short Option: progname --file foo.txt
      • Equals-version of long option: progname --file=foo.txt
      • Shorthand-version of short option: progname -ffoo.txt
    • Switch: progname --verbose
      • Long switch: progname --verbose
      • Short switch: progname -v
  • Documentation
    • --help
      • Global --help page
      • Per-command --help page
    • Generated --version command
    • Generated manpage
  • Completion
    • Bash completion
    • Zsh completion
    • Fish completion

Comparison to similar projects

opt-env-conf optparse-applicative envparse autodocodec
Applicative parsing ✔️ ✔️ ✔️ ✔️
Parsing arguments ✔️ ✔️ ✖️ ✖️
Parsing long options ✔️ ✔️ ✖️ ✖️
Parsing short options ✔️ ✔️ ✖️ ✖️
Parsing short-hand short options ✔️ ✔️ ✖️ ✖️
Parsing short-hand long options ✔️ ✔️ ✖️ ✖️
Parsing long switches ✔️ ✔️ ✖️ ✖️
Parsing short switches ✔️ ✔️ ✖️ ✖️
Parsing environment variables ✔️ ✖️ ✔️ ✖️
Parsing configuration values ✔️ ✖️ ✖️ ✔️
Generated global --help page ✔️ ✔️ ✖️ ✖️
Coloured global --help page ✔️ ✖️ ✖️ ✖️
Generated per-command --help page 🚧 ✔️ ✖️ ✖️
Coloured per-command --help page 🚧 ✖️ ✖️ ✖️
Generated --version command ✔️ ✖️ ✖️ ✖️
Generated manpage ✔️ ✖️ ✖️ ✖️
Helpful parse errors ✔️ ✔️ ✔️ ✔️
Coloured parse errors ✔️ ✖️ ✖️ ✖️
Generated manpage ✔️ ✖️ ✖️ ✖️
Typo suggestions 🚧 ✖️ ✖️ ✖️
Bash completion 🚧 ✔️ ✖️ ✖️
Zsh completion 🚧 ✔️ ✖️ ✖️
Fish completion 🚧 ✔️ ✖️ ✖️

Example

The example application contains a fully worked example.

This example is part of the build in CI so you can rely on it being up-to-date.