Selaa lähdekoodia

Merge pull request #1762 from ferd/reload-shell-apps-for-cfg

Reload apps running in shell with new config
pull/1764/head
Fred Hebert 7 vuotta sitten
committed by GitHub
vanhempi
commit
c50bb13a69
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 muutettua tiedostoa jossa 28 lisäystä ja 3 poistoa
  1. +28
    -3
      src/rebar_prv_shell.erl

+ 28
- 3
src/rebar_prv_shell.erl Näytä tiedosto

@ -271,11 +271,11 @@ maybe_boot_apps(State) ->
case find_apps_to_boot(State) of
undefined ->
%% try to read in sys.config file
ok = reread_config(State);
ok = reread_config([], State);
Apps ->
%% load apps, then check config, then boot them.
load_apps(Apps),
ok = reread_config(State),
ok = reread_config(Apps, State),
boot_apps(Apps)
end.
@ -340,11 +340,36 @@ load_apps(Apps) ->
not lists:keymember(App, 1, application:loaded_applications())],
ok.
reread_config(State) ->
reread_config(AppsToStart, State) ->
case find_config(State) of
no_config ->
ok;
ConfigList ->
%% This allows people who use applications that are also
%% depended on by rebar3 or its plugins to change their
%% configuration at runtime based on the configuration files.
%%
%% To do this, we stop apps that are already started before
%% reloading their configuration.
%%
%% We make an exception for apps that:
%% - are not already running
%% - would not be restarted (and hence would break some
%% compatibility with rebar3)
%% - are not in the config files and would see no config
%% changes
%% - are not in a blacklist, where changing their config
%% would be risky to the shell or the rebar3 agent
%% functionality (i.e. changing inets may break proxy
%% settings, stopping `kernel' would break everything)
Running = [App || {App, _, _} <- application:which_applications()],
BlackList = [inets, stdlib, kernel, rebar],
_ = [application:stop(App)
|| Config <- ConfigList,
{App, _} <- Config,
lists:member(App, Running),
lists:member(App, AppsToStart),
not lists:member(App, BlackList)],
_ = rebar_utils:reread_config(ConfigList),
ok
end.

Ladataan…
Peruuta
Tallenna