Current section
Files
Jump to
Current section
Files
rebar.config.script
EnsureMacro =
fun(Macro, Value, Config0) ->
ErlOpts = proplists:get_value(erl_opts, Config0, []),
ErlOptsCleared =
lists:filter(fun({d, Macro}) -> false;
({d, Macro, _}) -> false;
(_) -> true
end, ErlOpts),
NewErlOpts = [{d, Macro, Value}|ErlOptsCleared],
lists:keystore(erl_opts, 1, Config0, {erl_opts, NewErlOpts})
end.
EnvToMacro =
fun(Name, Config0) ->
case os:getenv(Name) of
false ->
Config0;
Env ->
EnsureMacro(list_to_atom(Name), list_to_atom(Env), Config0)
end
end.
DeleteDep =
fun(Dep, Config0) ->
Deps = proplists:get_value(deps, Config0, []),
DepsCleared = lists:keydelete(Dep, 1, Deps),
lists:keystore(deps, 1, Config0, {deps, DepsCleared})
end.
ReplaceDep =
fun(NewDep, OldDep, Config0) ->
Deps = proplists:get_value(deps, Config0, []),
DepsCleared = lists:keydelete(OldDep, 1, Deps),
NewDeps = [NewDep|DepsCleared],
lists:keystore(deps, 1, Config0, {deps, NewDeps})
end.
JsonLib =
fun(Config0) ->
case os:getenv("XPROF_JSON_LIB") of
false ->
Config0;
JsonMod ->
Config1 = EnsureMacro("XPROF_JSON_LIB", list_to_atom(JsonMod), Config0),
Config2 = EnvToMacro("XPROF_JSON_ENC_FUN", Config1),
%% jsone also deleted from .app.src applications
DeleteDep(jsone, Config2)
end
end.
CowboyVsn =
fun(Config0) ->
case os:getenv("COWBOY_VERSION") of
"1" ++ _ ->
Config1 = EnsureMacro('COWBOY_VERSION_1', true, Config0),
ReplaceDep({cowboy, "1.1.2"}, cowboy, Config1);
_ ->
Config0
end
end.
Rebar2 =
fun(Config0) ->
case erlang:function_exported(rebar3, main, 1) of
true -> % rebar3
Config0;
false -> % rebar 2.x or older
%% Only include app names for deps.
%% Top level app should declare source and version.
Deps = proplists:get_value(deps, Config0, []),
NewDeps = [element(1, Dep)||Dep <- Deps],
lists:keystore(deps, 1, Config0, {deps, NewDeps})
end
end.
Rebar2(CowboyVsn(JsonLib(CONFIG))).