% 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 = "git@github.com: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).