diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 00:32:09 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-14 00:32:09 +0100 |
| commit | 9ed82804f4364099e0c00a4995b452bc522336d1 (patch) | |
| tree | 8be729ee727faf91f8890ef10f8c0f4a95806632 /src | |
| parent | d45cde666ea4f6da1bf97b4acd9c1067c22974cc (diff) | |
| download | rabbitmq-server-git-9ed82804f4364099e0c00a4995b452bc522336d1.tar.gz | |
refactor
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_plugin.erl | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/rabbit_plugin.erl b/src/rabbit_plugin.erl index 8503268ee7..3c17f8f584 100644 --- a/src/rabbit_plugin.erl +++ b/src/rabbit_plugin.erl @@ -79,15 +79,11 @@ usage() -> action(list, [], _Opts, PluginsDir, PluginsDistDir) -> format_plugins(find_plugins(PluginsDir), find_plugins(PluginsDistDir)); -action(enable, ToEnable, _Opts, PluginsDir, PluginsDistDir) -> +action(enable, ToEnable0, _Opts, PluginsDir, PluginsDistDir) -> AllPlugins = find_plugins(PluginsDistDir), - ToEnable1 = [list_to_atom(Name) || Name <- ToEnable], - {Found, Missing} = lists:foldl(fun (#plugin{name = Name}, {Fs, Ms}) -> - case lists:member(Name, Ms) of - true -> {[Name|Fs], Ms -- [Name]}; - false -> {Fs, Ms} - end - end, {[], ToEnable1}, AllPlugins), + ToEnable = [list_to_atom(Name) || Name <- ToEnable0], + ToEnablePlugins = lookup_plugins(ToEnable, AllPlugins), + Missing = ToEnable -- plugin_names(ToEnablePlugins), case Missing of [] -> ok; _ -> io:format("Warning: the following plugins could not be found: ~p~n", @@ -98,11 +94,9 @@ action(enable, ToEnable, _Opts, PluginsDir, PluginsDistDir) -> fun (App, Deps) -> [{App, Dep} || Dep <- Deps] end, [{Name, Deps} || #plugin{name = Name, dependencies = Deps} <- AllPlugins]), - EnableOrder = digraph_utils:reachable(Found, G), + EnableOrder = digraph_utils:reachable(plugin_names(ToEnablePlugins), G), true = digraph:delete(G), io:format("Marked for enabling: ~p~n", [EnableOrder]), - EnableOrderPlugins = [Plugin || Plugin = #plugin{name = Name} <- AllPlugins, - lists:member(Name, EnableOrder)], ok = lists:foldl( fun (#plugin{name = Name, version = Version, location = Path}, ok) -> io:format("Enabling ~w-~s~n", [Name, Version]), @@ -113,9 +107,10 @@ action(enable, ToEnable, _Opts, PluginsDir, PluginsDistDir) -> [Name, Reason]), rabbit_misc:quit(2) end - end, ok, EnableOrderPlugins), - InstalledPlugins = read_enabled_plugins(), - update_enabled_plugins(merge_plugin_lists(InstalledPlugins, ToEnable)). + end, ok, lookup_plugins(EnableOrder, AllPlugins)), + InstalledPlugins = lookup_plugins(read_enabled_plugins(), AllPlugins), + update_enabled_plugins(plugin_names(merge_plugin_lists(InstalledPlugins, + ToEnablePlugins))). %%---------------------------------------------------------------------------- @@ -229,6 +224,14 @@ filter_applications(Applications) -> _ -> true end]. +%% Return the names of the given plugins. +plugin_names(Plugins) -> + [Name || #plugin{name = Name} <- Plugins]. + +%% Find plugins by name in a list of plugins. +lookup_plugins(Names, AllPlugins) -> + [P || P = #plugin{name = Name} <- AllPlugins, lists:member(Name, Names)]. + %% Read the enabled plugin names from disk. read_enabled_plugins() -> []. |
