aboutsummaryrefslogtreecommitdiffstats
path: root/src/rlx_prv_config.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rlx_prv_config.erl')
-rw-r--r--src/rlx_prv_config.erl28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/rlx_prv_config.erl b/src/rlx_prv_config.erl
index b223bce..19aa576 100644
--- a/src/rlx_prv_config.erl
+++ b/src/rlx_prv_config.erl
@@ -154,6 +154,20 @@ load_terms({overrides, Overrides0}, {ok, State0}) ->
{ok, rlx_state:overrides(State0, Overrides0)};
load_terms({dev_mode, DevMode}, {ok, State0}) ->
{ok, rlx_state:dev_mode(State0, DevMode)};
+load_terms({include_src, IncludeSrc}, {ok, State0}) ->
+ {ok, rlx_state:include_src(State0, IncludeSrc)};
+load_terms({release, {RelName, Vsn, {extend, RelName2}}, Applications}, {ok, State0}) ->
+ Release0 = rlx_release:new(RelName, Vsn),
+ ExtendRelease = rlx_state:get_configured_release(State0, RelName2, Vsn),
+ Applications1 = rlx_release:goals(ExtendRelease),
+ case rlx_release:goals(Release0,
+ lists:umerge(lists:usort(Applications),
+ lists:usort(Applications1))) of
+ E={error, _} ->
+ E;
+ {ok, Release1} ->
+ {ok, rlx_state:add_configured_release(State0, Release1)}
+ end;
load_terms({release, {RelName, Vsn}, Applications}, {ok, State0}) ->
Release0 = rlx_release:new(RelName, Vsn),
case rlx_release:goals(Release0, Applications) of
@@ -177,8 +191,9 @@ load_terms({sys_config, SysConfig}, {ok, State}) ->
{ok, rlx_state:sys_config(State, filename:absname(SysConfig))};
load_terms({overlay_vars, OverlayVars}, {ok, State}) ->
CurrentOverlayVars = rlx_state:get(State, overlay_vars),
- NewOverlayVars = lists:umerge(lists:usort(OverlayVars), lists:usort(CurrentOverlayVars)),
- {ok, rlx_state:put(State, overlay_vars, NewOverlayVars)};
+ NewOverlayVars0 = list_of_overlay_vars_files(OverlayVars),
+ NewOverlayVars1 = lists:umerge(lists:usort(NewOverlayVars0), lists:usort(CurrentOverlayVars)),
+ {ok, rlx_state:put(State, overlay_vars, NewOverlayVars1)};
load_terms({Name, Value}, {ok, State})
when erlang:is_atom(Name) ->
{ok, rlx_state:put(State, Name, Value)};
@@ -196,3 +211,12 @@ gen_providers(Providers, State) ->
(_, E={_, {error, _}}) ->
E
end, {[], {ok, State}}, Providers).
+
+list_of_overlay_vars_files(undefined) ->
+ [];
+list_of_overlay_vars_files([]) ->
+ [];
+list_of_overlay_vars_files([H | _]=FileNames) when erlang:is_list(H) ->
+ FileNames;
+list_of_overlay_vars_files(FileName) when is_list(FileName) ->
+ [FileName].