%% -*- mode: erlang -*- %% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 ft=erlang et %% rebar.config.script GENERATED BY concrete %% %% YOU SHOULDN'T NEED TO EDIT THIS FILE %% {concrete_rebar_script_version, 3}. %% We need the following helper function to merge dev only options %% into the values provided by rebar.config. %% Merge the list values in `ToAdd' into the list found at key `Key' %% in proplist `C'. Don't duplicate items. New Items are added to the %% front of existing items. It is an error if the value at `Key' is %% not a list in `C'. MergeConfig = fun(skip, C) -> C; ({Key, ToAdd}, C) -> case lists:keyfind(Key, 1, C) of false -> lists:keystore(Key, 1, C, {Key, ToAdd}); {Key, List} when is_list(List) -> %% remove items in ToAdd already in List ToAdd1 = [ I || I <- ToAdd, not lists:member(I, List) ], lists:keystore(Key, 1, C, {Key, List ++ ToAdd1 }) end end, %% -- Add development only options if we are a top-level build -- %% %% If a file named `.concrete/DEV_MODE' exists, we assume we are a %% top-level build (not being built as a dep of another project). We %% add the deps from dev_only_deps defined in rebar.config, add %% concrete as a dep, and define the compiler macro DEV_ONLY. %% This macro can be used to conditionally enable code (e.g. tests) %% that depend on development only dependencies. ErlOpts = {erl_opts, [{d, 'DEV_ONLY'}]}, %% Development only dependencies can be specified in the main %% rebar.config. This file should not need to be edited directly. DevOnlyDeps = case lists:keyfind(dev_only_deps, 1, CONFIG) of false -> skip; {dev_only_deps, DOD} -> {deps, DOD} end, EDown = case proplists:get_value(use_edown, CONFIG) of false -> skip; _ -> DocOpts = case lists:keymember(edoc_opts, 1, CONFIG) of true -> skip; false -> {edoc_opts, [{doclet, edown_doclet}]} end, [DocOpts, {deps, [{edown, ".*", {git, "git://github.com/seth/edown.git", {branch, "master"}}}]}] end, LockDeps = case proplists:get_value(use_lock_deps, CONFIG) of false -> skip; V -> Tag = case V of {_, _} = T -> T; _ -> {branch, "master"} end, [{deps, [{rebar_lock_deps_plugin, ".*", {git, "git://github.com/seth/rebar_lock_deps_plugin.git", Tag}}]}, {plugins, [rebar_lock_deps_plugin]}] end, ConfigPath = filename:dirname(SCRIPT), DevMarker = filename:join([ConfigPath, ".concrete/DEV_MODE"]), case filelib:is_file(DevMarker) of true -> ToMerge = lists:flatten([DevOnlyDeps, LockDeps, EDown, ErlOpts]), lists:foldl(fun(I, C) -> MergeConfig(I, C) end, CONFIG, ToMerge); false -> %% If the .concrete/ marker is not present, this script simply %% returns the config specified in rebar.config. This will be %% the behavior when the project is built as a dependency of %% another project. CONFIG end.