mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 11:06:20 +00:00
Implement merged overlays
This allows overlay_vars to merge comma delimited var config files
This commit is contained in:
parent
720d71e47d
commit
df7cfba71f
1 changed files with 18 additions and 8 deletions
|
@ -166,22 +166,32 @@ process_overlay(Config, ReltoolConfig) ->
|
||||||
%% providing an additional file on the command-line.
|
%% providing an additional file on the command-line.
|
||||||
%%
|
%%
|
||||||
overlay_vars(Config, Vars0, ReltoolConfig) ->
|
overlay_vars(Config, Vars0, ReltoolConfig) ->
|
||||||
BaseVars = load_vars_file(proplists:get_value(overlay_vars, ReltoolConfig)),
|
BaseVars = load_vars_file([proplists:get_value(overlay_vars, ReltoolConfig)]),
|
||||||
OverrideVars = load_vars_file(rebar_config:get_global(Config,
|
OverlayVars = rebar_config:get_global(Config, overlay_vars, []),
|
||||||
overlay_vars,
|
OverrideVars = load_vars_file(string:tokens(OverlayVars, ",")),
|
||||||
undefined)),
|
M = fun merge_overlay_var/3,
|
||||||
M = fun(_Key, _Base, Override) -> Override end,
|
|
||||||
dict:merge(M, dict:merge(M, Vars0, BaseVars), OverrideVars).
|
dict:merge(M, dict:merge(M, Vars0, BaseVars), OverrideVars).
|
||||||
|
|
||||||
|
merge_overlay_var(_Key, _Base, Override) -> Override.
|
||||||
|
|
||||||
%%
|
%%
|
||||||
%% If a filename is provided, construct a dict of terms
|
%% If a filename is provided, construct a dict of terms
|
||||||
%%
|
%%
|
||||||
load_vars_file(undefined) ->
|
load_vars_file([undefined]) ->
|
||||||
dict:new();
|
dict:new();
|
||||||
load_vars_file(File) ->
|
load_vars_file([]) ->
|
||||||
|
dict:new();
|
||||||
|
load_vars_file(Files) ->
|
||||||
|
load_vars_file(Files, dict:new()).
|
||||||
|
|
||||||
|
load_vars_file([], Dict) ->
|
||||||
|
Dict;
|
||||||
|
load_vars_file([File | Files], BaseVars) ->
|
||||||
case rebar_config:consult_file(File) of
|
case rebar_config:consult_file(File) of
|
||||||
{ok, Terms} ->
|
{ok, Terms} ->
|
||||||
dict:from_list(Terms);
|
OverrideVars = dict:from_list(Terms),
|
||||||
|
M = fun merge_overlay_var/3,
|
||||||
|
load_vars_file(Files, dict:merge(M, BaseVars, OverrideVars));
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
?ABORT("Unable to load overlay_vars from ~p: ~p\n", [File, Reason])
|
?ABORT("Unable to load overlay_vars from ~p: ~p\n", [File, Reason])
|
||||||
end.
|
end.
|
||||||
|
|
Loading…
Reference in a new issue