summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control.erl15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl
index 9b317cee04..1a53b0cff2 100644
--- a/src/rabbit_control.erl
+++ b/src/rabbit_control.erl
@@ -39,6 +39,12 @@
{"Permissions", rabbit_auth_backend_internal, list_vhost_permissions,
vhost_perms_info_keys}]).
+-define(OPTS_COMMANDS,
+ [{"-p", [set_permissions, clear_permissions, list_permissions,
+ list_user_permissions, list_queues, list_bindings,
+ list_connections, list_channels, list_consumers, trace_on,
+ trace_off]}]).
+
%%----------------------------------------------------------------------------
-ifdef(use_specs).
@@ -84,6 +90,15 @@ start() ->
[string:join([atom_to_list(Command) | Args], " ")])
end,
+ lists:foreach(fun ({Opt, Commands}) ->
+ case {proplists:is_defined(Opt, Opts),
+ lists:member(Command, Commands)} of
+ {true, false} -> PrintInvalidCommandError(),
+ usage();
+ _ -> ok
+ end
+ end, ?OPTS_COMMANDS),
+
%% The reason we don't use a try/catch here is that rpc:call turns
%% thrown errors into normal return values
case catch action(Command, Node, Args, Opts, Inform) of