Commit Graph

213 Commits

Author SHA1 Message Date
Daniil Fedotov 61eeab17c1 Callback for exec_command function to process output 2017-06-06 12:07:34 +01:00
Daniil Fedotov 769fe8e712 Better error management with stream outputs from list_ commands.
Fixed incorrect tuple matching.
Added support for error codes and messages for timeout with value.
2017-05-24 13:28:51 +01:00
Daniil Fedotov 60deb8514d Improve error reporting.
badrpc errors are handled in Rabbitmqctl module.
Report errors from node discovery
Add helpers to skip errors in formatters.
2017-05-24 12:08:03 +01:00
Daniil Fedotov 8ef4c404ab Do not import modules. Import only protocols and records.
Aliases is a convinient enough to reference elixir modules.
Imported functions can be confusing, especially mixed with aliases.
2017-04-05 11:59:54 +01:00
Daniil Fedotov 819d512038 Implement shutdown command 2017-04-04 19:23:50 +01:00
Daniil Fedotov 62a44ac641 Optimize rabbitmqctl startup.
Plugins dirs are added to ERL_LIBS by shell scripts, we try to load
enabled plugins first and scan plugins dir only if some of them
are not found.
When discovering plugins, we can load applications only for enabled ones.
EPMD can be started only after initial `net_kernel:start` call failed.
We don't need to discover all commands every time, only if a command is not
in the `rabbitmqctl` application modules.
[finishes #143025009]
2017-04-04 14:06:53 +01:00
Daniil Fedotov 04c1c2e2f9 Do not print "Command '' not found" for empty command 2017-01-25 15:24:47 +00:00
Daniil Fedotov a5857e13d8 Handle auto-completion line as argv, not a single argument
It's easier to detect a script name if passed as argv list.
Arguments can be parsed with quoted spaces (e.g. in directory path)
2017-01-24 14:40:31 +00:00
Daniil Fedotov 3871c4ccde Support autocompletion with different script names 2017-01-24 12:30:12 +00:00
Daniil Fedotov 6288d75472 Cleanup compiler warnings 2017-01-24 09:59:00 +00:00
Daniil Fedotov 2174446ff9 Auto complete command called with full path 2017-01-24 09:47:30 +00:00
Michael Klishin cbab77e34c Fix --auto-complete clauses
According to the completion script in rabbitmq/rabbitmq-server-release#14, the correct
way to invoke auto-completion is

    /path/to/rabbitmqctl --auto-complete [command prefix]

However, the above arguments were not matched by the existing
main heads.
2017-01-21 23:33:35 +03:00
Jean-Sébastien Pédron 5905f1c40a Update copyright line to year 2017 2017-01-10 15:42:40 +01:00
Daniil Fedotov 30b41ba267 Support start from common_test tests 2016-12-23 12:12:33 +00:00
Daniil Fedotov fc0ca12a91 Test commands suggestions 2016-12-06 12:19:25 +00:00
Daniil Fedotov 80dc953ee5 Suggest commands by Levenshtein distance 2016-12-05 18:59:58 +00:00
Michael Klishin cb41fe932d Unbreak with_distribution/1 2016-12-05 19:23:20 +03:00
Alexey Lebedeff 2d11e45625 Handle errors from distribution start attempts
Otherwise broken or misconfigured distribution is reported as an
unavailable broker node.
2016-12-05 17:51:22 +03:00
Daniil Fedotov c62d48380a Load command specific options from a single command 2016-11-30 16:51:59 +00:00
Michael Klishin c59b6c029f Make switches/0 and aliases/0 optional command callbacks
Fixes #120. Same as #124 but doesn't include any unrelated changes
and thus suffer from #126.
2016-11-22 16:11:25 +03:00
Michael Klishin e92022da11 Revert "Merge pull request #124 from rabbitmq/rabbitmq-cli-120"
This reverts commit c087a635c0, reversing
changes made to 59225a551d.

See https://github.com/rabbitmq/rabbitmq-cli/issues/126, which exposed
a serious flaw in the option parser split which was introduced
as part of #124.

Reopens #120.
2016-11-22 14:07:58 +03:00
Daniil Fedotov cc87a49f93 Make switches as aliases callbacks optional 2016-11-18 17:21:27 +00:00
Daniil Fedotov 59225a551d Remove `flags/0` callback. Remove command modules helpers from helpers to command_modules 2016-11-18 14:12:53 +00:00
Daniil Fedotov 36ac65d56a Remove dependencies 2016-11-15 16:14:22 +00:00
Daniil Fedotov ccb6bf116c Namespace refactoring 2016-11-14 17:52:08 +00:00
Daniil Fedotov 1dc8e90a70 Make tests happy 2016-11-10 17:40:43 +00:00
Daniil Fedotov 3c8e6d1ef7 Use seconds in timeout parameter. Better timeout error report 2016-11-10 14:53:59 +00:00
Daniil Fedotov ad90e60121 script name is overridable via argument 2016-11-08 14:21:31 +00:00
Daniil Fedotov b98470288d List plugins formatter 2016-11-08 14:19:11 +00:00
Daniil Fedotov 85d6868763 Make table formatter look like in the old CLI 2016-11-04 12:38:35 +00:00
Daniil Fedotov dcd831ec99 Correct IO device name 2016-11-04 11:12:14 +00:00
Daniil Fedotov 14d82eabdc Refactor error reporting to allow commands specify formatter 2016-11-04 11:11:03 +00:00
Daniil Fedotov 3f4abba717 Command specific formatters 2016-11-03 18:10:18 +00:00
Daniil Fedotov 4c13a51ac8 Reworking command outputs 2016-08-22 12:58:37 +01:00
Daniil Fedotov 0da30bd1d1 Help command return list of strings instead of printing them\ 2016-08-18 17:38:49 +01:00
Daniil Fedotov 35fc3d12cd Default output formatting and exit code selection. Inspect printer 2016-08-18 15:35:49 +01:00
Michael Klishin 1d911b4350 Delete a duplicate fn head 2016-08-14 08:07:19 +03:00
Michael Klishin cb209d834d Merge branch 'master' into rabbitmq-cli-rename-cluster-node-command
Conflicts:
	lib/rabbitmqctl.ex
2016-08-12 04:36:51 +03:00
Michael Klishin 0449004a6b Merge branch 'master' into rabbitmq-cli-change-cluster-node-type 2016-08-12 01:04:01 +03:00
Michael Klishin ad2b4627c7 Merge branch 'master' into rabbitmq-cli-9
Conflicts:
	lib/rabbitmq/cli/ctl/parser.ex
	lib/rabbitmqctl.ex
2016-08-11 11:52:54 +03:00
Daniil Fedotov 6f3f0854bd Rename auto complete option for consistency 2016-08-10 18:19:06 +01:00
Michael Klishin 31c3356c56 Use effective program name in help command output
Note that this solution is imperfect because
for tests the name of the tool is `mix`. But most
tests don't care.
2016-08-09 15:05:48 +03:00
Michael Klishin a06a4321d6 merge_defaults_defaults => merge_all_defaults 2016-08-08 21:46:47 +03:00
Daniil Fedotov 4d40649d44 Command auto completion 2016-07-28 17:46:37 +01:00
Daniil Fedotov 7b35c7c2cc More validation, error handling and tests 2016-07-27 11:48:24 +01:00
Daniil Fedotov f2c4986fcf Implementing rename_cluster_nodes command 2016-07-26 18:08:37 +01:00
Daniil Fedotov cd68b3ce9c Implement change_cluster_node_type command 2016-07-25 16:48:45 +01:00
Michael Klishin 70f486c27d Squash a few compilation warnings 2016-07-10 12:08:33 +03:00
Michael Klishin 941263e83c Eliminate several warnings 2016-06-26 22:47:37 +03:00
Daniil Fedotov 963f6a2ff9 tests for list plugins command 2016-06-23 10:50:01 +01:00
Daniil Fedotov 2415ee58aa Plugin management commands 2016-06-23 10:50:01 +01:00
Michael Klishin 39b3de4d1e Namespace commands, fixes #74
Note that the top level module is not namespaced. It's
not clear to me if it should be or will be end up using
and (Elixir/Mix) umbrella project anyway.
2016-06-10 02:54:22 +03:00
Michael Klishin 506c9cc43f Normalize node names before passing them to Command.run/2
Fixes #76.
2016-06-10 00:56:44 +03:00
Michael Klishin d27469c665 RabbitMQ.CLI.RabbitMQCtl => RabbitMQ.CLI.Ctl, references #74 2016-06-09 04:08:21 +03:00
Michael Klishin 4e31f4c627 More renaming, references #74 2016-06-09 04:00:43 +03:00
Michael Klishin 8fcad8338e Namespace more modules under RabbitMQ.CLI, part of #74 2016-06-09 03:34:56 +03:00
Michael Klishin 0c35f5a8cd Move start_distribution into RabbitMQ.CLI.Distribution 2016-06-09 02:23:10 +03:00
Michael Klishin 3a2b277d4f Squash a warning 2016-06-09 00:42:51 +03:00
Daniil Fedotov 091105e5b0 0 arity start_distribution 2016-06-08 17:04:08 +01:00
Daniil Fedotov 9b703b2896 Dynamically select distribution node 2016-06-08 15:19:37 +01:00
Jean-Sébastien Pédron 1b1534f86b Implement the `join_cluster` command
Compared to the Erlang-based rabbitmqctl's command, this one accepts
`--disc` to specify the node type. In the implementation, it does
nothing because that's the default value already. It is only to improve
consistency, because there is a `--ram` flag.

The testsuite for this command is incomplete in this commit. When a
testcase will be able to start and stop multiple nodes, the testsuite
will need to be completed.

[#116551629]
2016-06-06 16:06:52 +02:00
Jean-Sébastien Pédron 9349c9bf07 Improve "Please stop the node with rabbitmqctl stop_app" message
... with "Please stop RabbitMQ with rabbitmqctl stop_app".

The previous message didn't make sense: `stop_app` only stop the
RabbitMQ application, not the entire node (which we don't want to do in
the context of this message).
2016-06-06 16:00:50 +02:00
kjnilsson 43ae69a06d Implement wait command 2016-06-02 16:03:54 +01:00
kjnilsson dec08906fa Implement reset and force_reset commands 2016-06-02 11:55:10 +01:00
Michael Klishin be84eb1e96 Handle node healthcheck failures 2016-06-02 01:38:09 +03:00
kjnilsson 715f691b8e avoid connecting to rabbitmq before executing help command
avoid printing a nil banner
2016-05-31 09:40:48 +01:00
Michael Klishin c8f36766b2 Don't fail with undef when printing command usage info with invalid CLI arguments 2016-05-30 02:16:10 +03:00
Michael Klishin 17f6c10f6b Cosmetics 2016-05-30 02:06:52 +03:00
Daniil Fedotov 70c17aa4f0 Print full usage on errors 2016-05-27 08:59:14 -06:00
Daniil Fedotov e01e0da063 Print help for selected command 2016-05-27 08:59:14 -06:00
kjnilsson d8ed6bef3c merge 2016-05-27 12:10:11 +01:00
kjnilsson 0704c14376 update status command with new behaviour 2016-05-27 11:25:21 +01:00
Michael Klishin aab8281fef Cosmetics 2016-05-27 11:46:52 +03:00
Daniil Fedotov d83a59637d Ability to specify switches in commands 2016-05-26 15:02:10 -06:00
Daniil Fedotov cfe41481a3 Return Stream from listing commands 2016-05-25 20:03:17 +01:00
Daniil Fedotov b7b2bbdcd2 Merge pull request #26 from rabbitmq/rabbitmq-cli-25
Re-parse the command on bad option in standard messages
2016-05-10 09:29:50 +01:00
Brandon Shroyer fe6f9763fd Parse commands internally in some print_standard_message commands 2016-05-09 11:38:37 -04:00
Brandon Shroyer 675b53040a Re-parse the command on bad option in standard messages 2016-05-09 11:07:49 -04:00
Daniil Fedotov a4033ef769 Print usage on incorrect command behaviour 2016-05-09 11:07:46 +01:00
Daniil Fedotov 3f869e18fb Fixing tests 2016-05-05 18:17:50 +01:00
Daniil Fedotov ed28bef62e Some refactorings 2016-05-05 11:39:27 +01:00
Daniil Fedotov 357904e0fe Experimental 2016-05-05 11:22:42 +01:00
Brandon Shroyer a158a1b2a8 Refactor module command execution in main module 2016-05-04 19:21:21 -04:00
Brandon Shroyer a2bedded17 WIP: Change module-specific command name to to run/2 2016-05-04 19:21:21 -04:00
Brandon Shroyer ca07bee46f Add check for valid flags to main module 2016-05-04 15:40:09 -04:00
Brandon Shroyer 31b377f4ce Status command prints info string unless suppressed 2016-05-02 10:38:54 -04:00
Brandon Shroyer 555aad1c40 Alter usage formatting to handle commands with multiple usage strings 2016-04-29 14:08:42 -04:00
Brandon Shroyer 693236ee70 Add argument count error reporting to main module. 2016-04-26 14:38:23 -04:00
Brandon Shroyer a1eac46e90 Separate argument count error codes from bad argument error codes in rabbitmqctl main 2016-04-26 12:20:11 -04:00
Brandon Shroyer a4a035d062 Convert unrecognized return codes to a standardized system 2016-04-05 13:58:31 -04:00
Brandon Shroyer 8daf2c182a Improve handling of refused authentication 2016-04-01 13:58:47 -04:00
Brandon Shroyer b2be1e8307 Handle extra edge case of authenticate_user return tuple 2016-04-01 13:42:25 -04:00
Brandon Shroyer 51922e4215 Fix exit code implementation so that it actually returns exit codes 2016-04-01 12:13:01 -04:00
Brandon Shroyer e254c3fd07 Reenabling printout in rabbitmqctl for debugging purposes. 2016-03-29 15:23:09 -04:00
Brandon Shroyer ed1e7784bf Refactor default autofills in main module 2016-03-28 11:18:08 -04:00
Brandon Shroyer bebc03b4a5 Converting some tabs that snuck in into spaces 2016-03-22 16:21:12 +00:00
Brandon Shroyer f387fd97d0 Remove extra print statement from result handler 2016-03-22 14:57:35 +00:00
Brandon Shroyer 6bde6372f9 Remove unnecessary (and noisy) exit calls 2016-03-22 13:38:55 +00:00
Brandon Shroyer a17b03283f Implement Unix-style exit codes from server-396
* Implements a set of Unix-like exit codes described in https://github.com/rabbitmq/rabbitmq-server/issues/396
2016-03-21 17:59:22 +00:00
Brandon Shroyer a065934ff7 Remove unnecessary variable bindings. 2016-03-09 11:41:34 -05:00
Brandon Shroyer 95286b2ee2 Remove unhelpful autofills from RabbitMQCtl errors. 2016-03-08 12:16:38 -05:00
Brandon Shroyer 86b09639ec Add timeouts to list_user_permissions, refactor a bunch of tests. 2016-03-08 12:05:25 -05:00
Brandon Shroyer f697e93d02 Converted options to maps. 2016-03-07 17:48:03 -05:00
Brandon Shroyer 6a4381c12c Auto-populate empty option[:node] in rabbitmqctl.main 2016-03-07 14:14:35 -05:00
Brandon Shroyer 28463f4d7f Add list_user_permissions, support for commands with args. 2016-03-07 11:16:19 -05:00
Brandon Shroyer d681309dce Add rudimentary usage support, refactoring main command. 2016-03-04 16:48:25 -05:00
Brandon Shroyer a5a54f1f85 Generate map of command modules. 2016-03-04 13:15:53 -05:00
Brandon Shroyer 9eb6345d10 Replace Mix.Utils.camelize with user-defined function. 2016-03-03 11:06:30 -05:00
Brandon Shroyer 5a6e7ae8bc Use code module to avoid naming commands explicitly in RabbitMQCtl.main. 2016-02-25 16:16:25 -05:00
Brandon Shroyer c46a5156cb Split status printing methods into separate module. 2016-02-25 15:03:28 -05:00
Brandon Shroyer 8764f59093 A couple of comments and some nicer spacing between public and private methods. 2016-02-03 10:15:43 -05:00
Brandon Shroyer d5278f0ec3 Added legal boilerplate. 2016-02-03 10:01:32 -05:00
Brandon Shroyer caef6f5f40 Renamed app to RabbitMQCtl. 2016-02-03 09:43:21 -05:00