fix: override plugins list

This commit is contained in:
DDDHuang 2022-03-07 10:32:49 +08:00
parent 7884238073
commit fbd70b02bc
1 changed files with 12 additions and 17 deletions

View File

@ -228,26 +228,21 @@ with_loaded_file(File, SuccFun) ->
end.
filter_plugins(Names) ->
Filter =
fun
({Name, true}) when is_atom(Name) ->
{true, Name};
(Name) when is_atom(Name) ->
{true, Name};
(_) ->
false
end,
filter_plugins(lists:filtermap(Filter, Names), []).
filter_plugins(Names, []).
filter_plugins([], Plugins) ->
lists:reverse(Plugins);
filter_plugins([Name | Names], Plugins) ->
case lists:member(Name, Plugins) of
true ->
filter_plugins(Names, Plugins);
false ->
filter_plugins(Names, [Name | Plugins])
end.
filter_plugins([{Name, Load} | Names], Plugins) ->
case {Load, lists:member(Name, Plugins)} of
{true, false} ->
filter_plugins(Names, [Name | Plugins]);
{false, true} ->
filter_plugins(Names, Plugins -- [Name]);
_ ->
filter_plugins(Names, Plugins)
end;
filter_plugins([Name | Names], Plugins) when is_atom(Name) ->
filter_plugins([{Name, true} | Names], Plugins).
load_plugins(Names, Persistent) ->
Plugins = list(),