forked from davisp/jiffy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrebar.config.script
62 lines (50 loc) · 1.59 KB
/
rebar.config.script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
% This file is part of Jiffy released under the MIT license.
% See the LICENSE file for more information.
% Only include PropEr as a dependency when the JIFFY_DEV
% environment variable is defined. This allows downstream
% applications to avoid requiring PropEr.
%
% This script is based on the example provided with Rebar.
IsRebar3 = erlang:function_exported(rebar3, main, 1),
PropErUrl = "git://github.com/manopapad/proper.git",
PortCompilerUrl = "[email protected]:blt/port_compiler.git",
IsDevEnv = begin
ConfigPath = filename:dirname(SCRIPT),
DevMarker = filename:join([ConfigPath, ".jiffy.dev"]),
filelib:is_file(DevMarker)
end.
Deps = if not IsDevEnv -> []; true ->
[{proper, ".*", {git, PropErUrl, {branch, "master"}}}]
end,
ErlOpts = if not IsDevEnv -> []; true ->
[{d, 'JIFFY_DEV'}]
end,
Plugins = case IsRebar3 of
true -> [{pc, {git, PortCompilerUrl, {branch, "master"}}}];
false -> [rebar_gdb_plugin]
end,
ProviderHooks = if not IsRebar3 -> []; true ->
[{pre, [
{compile, {pc, compile}},
{clean, {pc, clean}}
]}]
end,
OptsToAdd = [
{deps, Deps},
{erl_opts, ErlOpts},
{plugins, Plugins},
{provider_hooks, ProviderHooks}
],
AddOpt = fun(Name, Value, Config) when is_list(Value) ->
case lists:keyfind(Name, 1, Config) of
{Name, CurrVal} when is_list(CurrVal) ->
lists:keyreplace(Name, 1, Config, {Name, CurrVal ++ Value});
false ->
Config ++ [{Name, Value}];
_ ->
Config
end
end,
lists:foldl(fun({Name, Value}, CfgAcc) ->
AddOpt(Name, Value, CfgAcc)
end, CONFIG, OptsToAdd).