diff options
author | Benedikt Reinartz <filmor@gmail.com> | 2016-04-07 10:13:40 +0200 |
---|---|---|
committer | Benedikt Reinartz <filmor@gmail.com> | 2016-04-07 10:55:11 +0200 |
commit | 4ec226da34665280575c9bb9a00395c0fa923184 (patch) | |
tree | 2791cba35ad40531d8d1f64e9e6608cefe0f3a4d | |
parent | 0844e27d5be33e0e87a7c24a2742631cc4f9262e (diff) |
Recursively load configurations in shell.
The sys.config loading in the shell command did not implement recursion
and thus processed the file different from a `erl -config cfg/path`.
-rw-r--r-- | src/rebar_prv_shell.erl | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/rebar_prv_shell.erl b/src/rebar_prv_shell.erl index 365ed66..ab496c6 100644 --- a/src/rebar_prv_shell.erl +++ b/src/rebar_prv_shell.erl @@ -328,7 +328,8 @@ reread_config(State) -> ConfigList -> try [application:set_env(Application, Key, Val) - || {Application, Items} <- ConfigList, + || Config <- ConfigList, + {Application, Items} <- Config, {Key, Val} <- Items] catch _:_ -> ?ERROR("The configuration file submitted could not be read " @@ -391,7 +392,7 @@ add_test_paths(State) -> ok. % First try the --config flag, then try the relx sys_config --spec find_config(rebar_state:t()) -> [tuple()] | no_config. +-spec find_config(rebar_state:t()) -> [[tuple()]] | no_config. find_config(State) -> case first_value([fun find_config_option/1, fun find_config_rebar/1, @@ -439,11 +440,17 @@ find_config_relx(State) -> debug_get_value(sys_config, rebar_state:get(State, relx, []), no_value, "Found config from relx."). --spec consult_config(rebar_state:t(), string()) -> [tuple()]. +-spec consult_config(rebar_state:t(), string()) -> [[tuple()]]. consult_config(State, Filename) -> Fullpath = filename:join(rebar_dir:root_dir(State), Filename), ?DEBUG("Loading configuration from ~p", [Fullpath]), - case rebar_file_utils:try_consult(Fullpath) of + Config = case rebar_file_utils:try_consult(Fullpath) of [T] -> T; [] -> [] - end. + end, + SubConfigs = [consult_config(State, Entry ++ ".config") || + Entry <- Config, is_list(Entry) + ], + + [Config | lists:merge(SubConfigs)]. + |