summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-19 15:52:47 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-19 15:52:47 +0100
commitdd048a039005d3293682aaeed349a50c6a389125 (patch)
treeb65fc34f0901a5a8645886a287fe7399fcc0ad8a
parentce59f6561700eb21304c798dcd3fda5e1e55b933 (diff)
downloadrabbitmq-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.erl24
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),