diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 08:10:51 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 08:10:51 +0100 |
| commit | 4fc4dcc4ee2665d91591d9bb5d995d8d1dd4256f (patch) | |
| tree | a1e18a9a5691217ef2669e9742a0bad793dba4d0 /src | |
| parent | 7f404a06b61373a5a8bdd853182eac212fc177b4 (diff) | |
| download | rabbitmq-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.erl | 13 |
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, |
