Skip to content

Commit

Permalink
Add support for rebar3
Browse files Browse the repository at this point in the history
This should hopefully allow users to use rebar3 to compile jiffy while
also not breaking any project still using rebar2.
  • Loading branch information
davisp committed Mar 18, 2016
1 parent 6303ff9 commit 6fb6b04
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 35 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
.jiffy.dev
*.app
*.beam
*.d
*.o
*.so
_build
deps
erln8.config
hexer.config
Expand Down
10 changes: 1 addition & 9 deletions rebar.config
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,5 @@
]}.

{eunit_opts, [
verbose,
{report, {
eunit_surefire, [{dir,"."}]
}}
verbose
]}.

{plugins, [
rebar_gdb_plugin
]}.

75 changes: 50 additions & 25 deletions rebar.config.script
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,56 @@
%
% This script is based on the example provided with Rebar.

ErlOpts = [{d, 'JIFFY_DEV'}],
IsRebar3 = erlang:function_exported(rebar3, main, 1),

PropErUrl = "git://github.com/manopapad/proper.git",
PortCompilerUrl = "[email protected]:blt/port_compiler.git",

Proper = [
{proper, ".*", {git, "git://github.com/manopapad/proper.git", "master"}}
],

ConfigPath = filename:dirname(SCRIPT),
DevMarker = filename:join([ConfigPath, ".jiffy.dev"]),

case filelib:is_file(DevMarker) of
true ->
% Don't override existing dependencies
Config0 = case lists:keyfind(deps, 1, CONFIG) of
false ->
CONFIG ++ [{deps, Proper}];
{deps, DepsList} ->
lists:keyreplace(deps, 1, CONFIG, {deps, DepsList ++ Proper})
end,
Config1 = case lists:keyfind(erl_opts, 1, Config0) of
false ->
Config0 ++ [{erl_opts, ErlOpts}];
{erl_opts, Opts} ->
NewOpts = {erl_opts, Opts ++ ErlOpts},
lists:keyreplace(erl_opts, 1, Config0, NewOpts)
end;
false ->
CONFIG
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).
9 changes: 8 additions & 1 deletion test/jiffy_10_short_double_tests.erl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,14 @@
-include("jiffy_util.hrl").


filename() -> "../test/cases/short-doubles.txt".
filename() ->
{ok, Cwd} = file:get_cwd(),
case filename:basename(Cwd) of
".eunit" ->
"../test/cases/short-doubles.txt";
_ ->
"test/cases/short-doubles.txt"
end.


short_double_test_() ->
Expand Down

0 comments on commit 6fb6b04

Please sign in to comment.