diff options
author | Dave Smith <dizzyd@dizzyd.com> | 2012-10-31 19:47:13 -0700 |
---|---|---|
committer | Dave Smith <dizzyd@dizzyd.com> | 2012-10-31 19:47:13 -0700 |
commit | 6eb7c084991c0c2b5633fe784a705666eab63f20 (patch) | |
tree | 482720c282ea1fd3fca13dcacdfdb9a15fe57894 /src | |
parent | cc67814b657380507c3aee1222f9f2c8b8b061b4 (diff) | |
parent | 8f01d0de60268a6867bba512128044b8e4e75c69 (diff) |
Merge pull request #293 from Motiejus/skip_deps
Add skip_deps=AppListSeparatedByCommas feature.
I agree it's a bit of a weird thing, but it's a reasonable and safe extension. When time comes to properly overhaul stuff, skip_deps should disappear entirely.
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_deps.erl | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl index cd49343..074e929 100644 --- a/src/rebar_deps.erl +++ b/src/rebar_deps.erl @@ -69,15 +69,27 @@ preprocess(Config, _) -> %% If skip_deps=true, mark each dep dir as a skip_dir w/ the core so that %% the current command doesn't run on the dep dir. However, pre/postprocess %% WILL run (and we want it to) for transitivity purposes. + %% + %% Also, if skip_deps=comma,separated,app,list, then only the given + %% dependencies are skipped. NewConfig = case rebar_config:get_global(Config3, skip_deps, false) of - "true" -> - lists:foldl( - fun(#dep{dir = Dir}, C) -> - rebar_config:set_skip_dir(C, Dir) - end, Config3, AvailableDeps); - _ -> - Config3 - end, + "true" -> + lists:foldl( + fun(#dep{dir = Dir}, C) -> + rebar_config:set_skip_dir(C, Dir) + end, Config3, AvailableDeps); + Apps when is_list(Apps) -> + SkipApps = [list_to_atom(App) || App <- string:tokens(Apps, ",")], + lists:foldl( + fun(#dep{dir = Dir, app = App}, C) -> + case lists:member(App, SkipApps) of + true -> rebar_config:set_skip_dir(C, Dir); + false -> C + end + end, Config3, AvailableDeps); + _ -> + Config3 + end, %% Filtering out 'raw' dependencies so that no commands other than %% deps-related can be executed on their directories. |