summaryrefslogtreecommitdiff
path: root/src/rebar_prv_shell.erl
diff options
context:
space:
mode:
authorBenedikt Reinartz <filmor@gmail.com>2016-04-07 10:13:40 +0200
committerBenedikt Reinartz <filmor@gmail.com>2016-04-07 10:55:11 +0200
commit4ec226da34665280575c9bb9a00395c0fa923184 (patch)
tree2791cba35ad40531d8d1f64e9e6608cefe0f3a4d /src/rebar_prv_shell.erl
parent0844e27d5be33e0e87a7c24a2742631cc4f9262e (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`.
Diffstat (limited to 'src/rebar_prv_shell.erl')
-rw-r--r--src/rebar_prv_shell.erl17
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)].
+