Hello,
It is my pleasure to announce the release of cmdliner 2.0.0.
Cmdliner is a library that allows the declarative definition of command line interfaces with outstanding support for command line interface user conventions and standards.
The main points of this release are:
- ANSI styled error and deprecation messages (details)
- Support for manpage installation (details)
- Support for shell auto-completion (details)
The latter was made possible by good initial ground work of @andreypopp who can now claim to have unblocked my mind and the very first and 11 years old Cmdliner issue. Many thanks to him!
This addition has the following consequences:
- 
The problematic feature that allowed you to specify command names, option names and enumerant values by a prefix if the prefix was unambiguous has now been removed. See this issue for the rationale. Set CMDLINER_LEGACY_PREFIXES=truein your environment if you find yourself in need of a quick backward compatibility fix because one of your scripts is failing due to a prefix being used (but do eventually correct the script!).
- 
It finally triggered making the type Arg.convabstract as announced it would become in 2017. See this issue for details.
If you are a user of cmdliner based tools. You may want to have at a look how to configure your shell in order to benefit from their completion scripts, especially if said tools are installed via opam. After installing cmdliner you should be able to check that your configuration works correctly on the new cmdliner tool that now gets installed with cmdliner itself.
For other changes that may affect you or your users please head to the release notes which have many other details.
Other than that a full pass was made over the documentation to try to improve and bring it up-to-date with the latest style and additions. Notably the tutorial and examples were updated to make use of the binding operators; however obscure let punning may feel, these are less error prone as your number of cli arguments grow.
I also added a cookbook which tries to distill in shorter snippets some of cmdlinerās features and the experience I gathered over the past 14 years of using cmdliner to define dozens of command line interfaces. It includes source code structure tips and a few bootstrapping blueprints to cut and paste for when you start your next command line tool.
For this release Iām very thankful to a private one-time donation[1], a grant from the OCaml software foundation and, as always, my few but faithfull donors. All of which are essential for these releases to eventually get out. They do take quite a bit longer to devise that one would expect :ā)
Home page: https://erratique.ch/software/cmdliner
API docs & manuals: https://erratique.ch/software/cmdliner/doc/  or odig doc cmdliner
Install: opam install cmdliner (once the PR is merged, may take a few days)
Best,
Daniel
- Which are as nice as recurring donations ;ā) ā©ļø