From 4fc4dcc4ee2665d91591d9bb5d995d8d1dd4256f Mon Sep 17 00:00:00 2001 From: Alexandru Scvortov Date: Wed, 14 Sep 2011 08:10:51 +0100 Subject: 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. --- src/rabbit_plugin.erl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') 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, -- cgit v1.2.1