diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2012-10-26 14:00:37 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-10-26 14:00:37 +0100 |
commit | 3b059d1d73a489fe80c05a2aeeb7384a738badd7 (patch) | |
tree | 76c78a52b21dfb927452187db7cc83ec2cea5e6b | |
parent | f69c26071effd0c5e2f923814b765e522996e588 (diff) | |
download | rabbitmq-server-3b059d1d73a489fe80c05a2aeeb7384a738badd7.tar.gz |
simplify
-rw-r--r-- | src/rabbit_plugins.erl | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index 5fa9dd99..abe9b089 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -97,22 +97,16 @@ read_enabled(PluginsFile) -> %% When Reverse =:= true the bottom/leaf level applications are returned in %% the resulting list, otherwise they're skipped. dependencies(Reverse, Sources, AllPlugins) -> - %% A dict here is used en lieu of sets to dedup each Name, while - %% still maintaining the Deps list for each whose deps are - %% known. Missing plugins' dependencies cannot be known. - DepMap = lists:foldl( - fun({Name, Deps}, Acc) -> - dict:append_list(Name, Deps, Acc) - end, - dict:new(), - [{Name, Deps} || #plugin{name = Name, - dependencies = Deps} <- AllPlugins] ++ - [{Dep, []} || #plugin{dependencies = Deps} <- AllPlugins, - Dep <- Deps]), {ok, G} = rabbit_misc:build_acyclic_graph( fun (App, _Deps) -> [{App, App}] end, fun (App, Deps) -> [{App, Dep} || Dep <- Deps] end, - dict:to_list(DepMap)), + lists:ukeysort( + 1, [{Name, Deps} || + #plugin{name = Name, + dependencies = Deps} <- AllPlugins] ++ + [{Dep, []} || + #plugin{dependencies = Deps} <- AllPlugins, + Dep <- Deps])), Dests = case Reverse of false -> digraph_utils:reachable(Sources, G); true -> digraph_utils:reaching(Sources, G) |