diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-19 15:52:47 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-19 15:52:47 +0100 |
| commit | dd048a039005d3293682aaeed349a50c6a389125 (patch) | |
| tree | b65fc34f0901a5a8645886a287fe7399fcc0ad8a | |
| parent | ce59f6561700eb21304c798dcd3fda5e1e55b933 (diff) | |
| download | rabbitmq-server-git-dd048a039005d3293682aaeed349a50c6a389125.tar.gz | |
running "rabbitmq-plugin enable" will fix missing dependencies as well as remove unnecessary plugins
| -rw-r--r-- | src/rabbit_plugin.erl | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/rabbit_plugin.erl b/src/rabbit_plugin.erl index e963c2e65c..7bc75e50ab 100644 --- a/src/rabbit_plugin.erl +++ b/src/rabbit_plugin.erl @@ -84,6 +84,8 @@ action(list, [Pattern], Opts, PluginsDir, PluginsDistDir) -> action(enable, ToEnable0, _Opts, PluginsDir, PluginsDistDir) -> AllPlugins = find_plugins(PluginsDistDir), + Enabled = read_enabled_plugins(PluginsDir), + EnabledPlugins = lookup_plugins(Enabled, AllPlugins), ToEnable = [list_to_atom(Name) || Name <- ToEnable0], ToEnablePlugins = lookup_plugins(ToEnable, AllPlugins), Missing = ToEnable -- plugin_names(ToEnablePlugins), @@ -92,17 +94,19 @@ action(enable, ToEnable0, _Opts, PluginsDir, PluginsDistDir) -> _ -> io:format("Warning: the following plugins could not be found: ~p~n", [Missing]) end, - EnableOrder = calculate_required_plugins(plugin_names(ToEnablePlugins), + NewEnabledPlugins = merge_plugin_lists(EnabledPlugins, ToEnablePlugins), + EnableOrder = calculate_required_plugins(plugin_names(NewEnabledPlugins), AllPlugins), - io:format("Will enable: ~p~n", [EnableOrder]), - ok = lists:foldl( - fun (Plugin, ok) -> enable_one_plugin(Plugin, PluginsDir) end, - ok, lookup_plugins(EnableOrder, AllPlugins)), - EnabledPlugins = lookup_plugins(read_enabled_plugins(PluginsDir), AllPlugins), - update_enabled_plugins(PluginsDir, - plugin_names(merge_plugin_lists(EnabledPlugins, - ToEnablePlugins))), - action(prune, [], {}, PluginsDir, PluginsDistDir); + EnableOrder1 = EnableOrder -- plugin_names(find_plugins(PluginsDir)), + case EnableOrder1 of + [] -> io:format("No plugins to enable.~n"); + _ -> io:format("Will enable: ~p~n", [EnableOrder1]), + ok = lists:foldl( + fun (Plugin, ok) -> enable_one_plugin(Plugin, PluginsDir) end, + ok, lookup_plugins(EnableOrder1, AllPlugins)), + update_enabled_plugins(PluginsDir, plugin_names(NewEnabledPlugins)), + action(prune, [], {}, PluginsDir, PluginsDistDir) + end; action(prune, [], _Opts, PluginsDir, PluginsDistDir) -> ExplicitlyEnabledPlugins = read_enabled_plugins(PluginsDir), |
