As of v3.7.0 Milestone 8, RabbitMQ ships with a brand new set of CLI tools (
rabbitmq-plugins, and more), reworked from the ground up. We had a few goals with this project:
* We wanted to use a more user-friendly command line parser and produce more useful help and error messages
* CLI tools should be extensible from plugins: plugins such as management, federation, shovel, trust store all have functions that are meant to be invoked by CLI tools but the only way of doing it was `rabbitmqctl eval`, which is error prone and can be dangerous
* We wanted to give Elixir
a try on a real project and make it easier for developers new to Erlang to extend the CLI functionality
* Our CLI tools historically didn't have good test coverage; the new ones should (and do)
* CLI tools should be able to produce machine-friendly formats, be it JSON, CSV or something else; there was no internal infrastructure for doing that in the original implementation
* CLI tools should be a separate repository just like all plugins, client libraries, and so on
9 months later the experiment was declared a success and integrated into RabbitMQ distribution.
Please give v3.7.0 Milestone 8 a try and take a look at how easy it is to extend the CLI.
There's also a longer document that covers new features and implementation decisions.