diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar_reltool.erl | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/src/rebar_reltool.erl b/src/rebar_reltool.erl index 18b0702..9f9488e 100644 --- a/src/rebar_reltool.erl +++ b/src/rebar_reltool.erl @@ -166,22 +166,32 @@ process_overlay(Config, ReltoolConfig) ->  %% providing an additional file on the command-line.  %%  overlay_vars(Config, Vars0, ReltoolConfig) -> -    BaseVars = load_vars_file(proplists:get_value(overlay_vars, ReltoolConfig)), -    OverrideVars = load_vars_file(rebar_config:get_global(Config, -                                                          overlay_vars, -                                                          undefined)), -    M = fun(_Key, _Base, Override) -> Override end, +    BaseVars = load_vars_file([proplists:get_value(overlay_vars, ReltoolConfig)]), +    OverlayVars = rebar_config:get_global(Config, overlay_vars, []), +    OverrideVars = load_vars_file(string:tokens(OverlayVars, ",")), +    M = fun merge_overlay_var/3,       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  %% -load_vars_file(undefined) -> +load_vars_file([undefined]) -> +    dict:new(); +load_vars_file([]) ->      dict:new(); -load_vars_file(File) -> +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          {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} ->              ?ABORT("Unable to load overlay_vars from ~p: ~p\n", [File, Reason])      end. | 
