aboutsummaryrefslogtreecommitdiff
path: root/rebar.config.script
diff options
context:
space:
mode:
Diffstat (limited to 'rebar.config.script')
-rw-r--r--rebar.config.script31
1 files changed, 26 insertions, 5 deletions
diff --git a/rebar.config.script b/rebar.config.script
index 166f1cbec..ccafba7ec 100644
--- a/rebar.config.script
+++ b/rebar.config.script
@@ -19,7 +19,7 @@ ModCfg0 = fun(F, Cfg, [Key|Tail], Op, Default) ->
[{Key, F(F, OldVal, Tail, Op, Default)} | PartCfg]
end
end,
-ModCfg = fun(Cfg, Keys, Op, Default) -> ModCfg0(ModCfg0, Cfg, Keys, Op, Default) end.
+ModCfg = fun(Cfg, Keys, Op, Default) -> ModCfg0(ModCfg0, Cfg, Keys, Op, Default) end,
Cfg = case file:consult(filename:join(filename:dirname(SCRIPT), "vars.config")) of
{ok, Terms} ->
@@ -28,6 +28,13 @@ Cfg = case file:consult(filename:join(filename:dirname(SCRIPT), "vars.config"))
[]
end,
+ProcessSingleVar = fun(F, Var, Tail) ->
+ case F(F, [Var], []) of
+ [] -> Tail;
+ [Val] -> [Val | Tail]
+ end
+ end,
+
ProcessVars = fun(_F, [], Acc) ->
lists:reverse(Acc);
(F, [{Type, Ver, Value} | Tail], Acc) when
@@ -40,17 +47,31 @@ ProcessVars = fun(_F, [], Acc) ->
SysVer < Ver
end,
if Include ->
- F(F, Tail, [Value | Acc]);
+ F(F, Tail, ProcessSingleVar(F, Value, Acc));
true ->
F(F, Tail, Acc)
end;
+ (F, [{Type, Ver, Value, ElseValue} | Tail], Acc) when
+ Type == if_version_above orelse
+ Type == if_version_below ->
+ SysVer = erlang:system_info(otp_release),
+ Include = if Type == if_version_above ->
+ SysVer > Ver;
+ true ->
+ SysVer < Ver
+ end,
+ if Include ->
+ F(F, Tail, ProcessSingleVar(F, Value, Acc));
+ true ->
+ F(F, Tail, ProcessSingleVar(F, ElseValue, Acc))
+ end;
(F, [{Type, Var, Value} | Tail], Acc) when
Type == if_var_true orelse
Type == if_var_false ->
Flag = Type == if_var_true,
case proplists:get_bool(Var, Cfg) of
V when V == Flag ->
- F(F, Tail, [Value | Acc]);
+ F(F, Tail, ProcessSingleVar(F, Value, Acc));
_ ->
F(F, Tail, Acc)
end;
@@ -59,7 +80,7 @@ ProcessVars = fun(_F, [], Acc) ->
Type == if_var_no_match ->
case proplists:get_value(Var, Cfg) of
V when V == Match ->
- F(F, Tail, [Value | Acc]);
+ F(F, Tail, ProcessSingleVar(F, Value, Acc));
_ ->
F(F, Tail, Acc)
end;
@@ -146,7 +167,7 @@ Conf6 = case {lists:keyfind(cover_enabled, 1, Conf5), os:getenv("TRAVIS")} of
Conf5
end,
-%io:format("ejabberd configuration:~n ~p~n", [Conf5]),
+%io:format("ejabberd configuration:~n ~p~n", [Conf6]),
Conf6.