summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean Parpaillon <jean.parpaillon@free.fr>2015-05-21 15:25:09 +0200
committerJean Parpaillon <jean.parpaillon@free.fr>2015-05-23 11:26:44 +0200
commit7ff23a63dcfacf064dc0fca04bd6649181e00b0a (patch)
tree617263bc7397a4584936ab2db5c578a949bf79d2 /src
parentd9bad345062ec29d748d77c1497232b769a379d0 (diff)
Add rebar.config 'excluded_apps' key.
Listed applications are simply ignored. Allows for configuration time sub-application building.
Diffstat (limited to 'src')
-rw-r--r--src/rebar_app_discover.erl27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl
index e2ef179..332efb0 100644
--- a/src/rebar_app_discover.erl
+++ b/src/rebar_app_discover.erl
@@ -20,13 +20,19 @@ do(State, LibDirs) ->
%% Sort apps so we get the same merged deps config everytime
SortedApps = rebar_utils:sort_deps(Apps),
lists:foldl(fun(AppInfo, StateAcc) ->
- {AppInfo1, StateAcc1} = merge_deps(AppInfo, StateAcc),
- Name = rebar_app_info:name(AppInfo),
- OutDir = filename:join(DepsDir, Name),
- AppInfo2 = rebar_app_info:out_dir(AppInfo1, OutDir),
- ProjectDeps1 = lists:delete(Name, ProjectDeps),
- rebar_state:project_apps(StateAcc1
- ,rebar_app_info:deps(AppInfo2, ProjectDeps1))
+ Name = rebar_app_info:name(AppInfo),
+ case enable(State, AppInfo) of
+ true ->
+ {AppInfo1, StateAcc1} = merge_deps(AppInfo, StateAcc),
+ OutDir = filename:join(DepsDir, Name),
+ AppInfo2 = rebar_app_info:out_dir(AppInfo1, OutDir),
+ ProjectDeps1 = lists:delete(Name, ProjectDeps),
+ rebar_state:project_apps(StateAcc1
+ ,rebar_app_info:deps(AppInfo2, ProjectDeps1));
+ false ->
+ ?INFO("Ignoring ~s", [Name]),
+ StateAcc
+ end
end, State, SortedApps).
format_error({module_list, File}) ->
@@ -211,3 +217,10 @@ try_handle_app_src_file(_, AppDir, [File], Validate) when Validate =:= invalid
end;
try_handle_app_src_file(_, _AppDir, Other, _Validate) ->
throw({error, {multiple_app_files, Other}}).
+
+enable(State, AppInfo) ->
+ not lists:member(to_atom(rebar_app_info:name(AppInfo)),
+ rebar_state:get(State, excluded_apps, [])).
+
+to_atom(Bin) ->
+ list_to_atom(binary_to_list(Bin)).