summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-14 08:10:51 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-14 08:10:51 +0100
commit4fc4dcc4ee2665d91591d9bb5d995d8d1dd4256f (patch)
treea1e18a9a5691217ef2669e9742a0bad793dba4d0 /src
parent7f404a06b61373a5a8bdd853182eac212fc177b4 (diff)
downloadrabbitmq-server-git-4fc4dcc4ee2665d91591d9bb5d995d8d1dd4256f.tar.gz
support regexp filtering when listing plugins
So, "rabbitmq-plugin list" shows all the plugins and "rabbitmq-plugin list web" shows all the plugins with "web" in their name.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_plugin.erl13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/rabbit_plugin.erl b/src/rabbit_plugin.erl
index 399b067721..aab449c4c1 100644
--- a/src/rabbit_plugin.erl
+++ b/src/rabbit_plugin.erl
@@ -79,7 +79,9 @@ usage() ->
%%----------------------------------------------------------------------------
action(list, [], Opts, PluginsDir, PluginsDistDir) ->
- format_plugins(PluginsDir, PluginsDistDir,
+ action(list, [".*"], Opts, PluginsDir, PluginsDistDir);
+action(list, [Pattern], Opts, PluginsDir, PluginsDistDir) ->
+ format_plugins(PluginsDir, PluginsDistDir, Pattern,
proplists:get_bool(?COMPACT_OPT, Opts));
action(enable, ToEnable0, _Opts, PluginsDir, PluginsDistDir) ->
@@ -180,13 +182,16 @@ parse_binary(Bin) ->
end.
%% Pretty print a list of plugins.
-format_plugins(PluginsDir, PluginsDistDir, Compact) ->
+format_plugins(PluginsDir, PluginsDistDir, Pattern, Compact) ->
AvailablePlugins = find_plugins(PluginsDistDir),
EnabledExplicitly = read_enabled_plugins(PluginsDir),
EnabledPlugins = find_plugins(PluginsDir),
EnabledImplicitly = plugin_names(EnabledPlugins) -- EnabledExplicitly,
- [ format_plugin(Plugin, EnabledExplicitly, EnabledImplicitly, Compact)
- || Plugin <- usort_plugins(EnabledPlugins ++ AvailablePlugins)],
+ {ok, RE} = re:compile(Pattern),
+ [ format_plugin(P, EnabledExplicitly, EnabledImplicitly, Compact)
+ || P = #plugin{name = Name} <- usort_plugins(EnabledPlugins ++
+ AvailablePlugins),
+ re:run(atom_to_list(Name), RE, [{capture, none}]) =:= match],
ok.
format_plugin(#plugin{name = Name, version = Version, description = Description,