summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_core.erl7
-rw-r--r--src/rebar_deps.erl15
2 files changed, 21 insertions, 1 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index 863d1d5..42e106e 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -163,6 +163,13 @@ skip_or_process_dir({_, ModuleSetFile}=ModuleSet, Config, CurrentCodePath,
skip_or_process_dir1(AppFile, ModuleSet, Config, CurrentCodePath,
Dir, Command, DirSet) ->
case rebar_app_utils:is_skipped_app(Config, AppFile) of
+ {Config1, {true, _SkippedApp}} when Command == 'update-deps' ->
+ %% update-deps does its own app skipping. Unfortunately there's no
+ %% way to signal this to rebar_core, so we have to explicitly do it
+ %% here... Otherwise if you use app=, it'll skip the toplevel
+ %% directory and nothing will be updated.
+ process_dir1(Dir, Command, DirSet, Config1,
+ CurrentCodePath, ModuleSet);
{Config1, {true, SkippedApp}} ->
?DEBUG("Skipping app: ~p~n", [SkippedApp]),
Config2 = increment_operations(Config1),
diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl
index 4a98ddf..40000ad 100644
--- a/src/rebar_deps.erl
+++ b/src/rebar_deps.erl
@@ -600,7 +600,10 @@ update_deps_int(Config0, UDD) ->
%% Update each dep
UpdatedDeps = [update_source(Config1, D)
- || D <- Deps, D#dep.source =/= undefined, not lists:member(D, UDD)],
+ || D <- Deps, D#dep.source =/= undefined,
+ not lists:member(D, UDD),
+ not should_skip_update_dep(Config1, D)
+ ],
lists:foldl(fun(Dep, {Config, Updated}) ->
{true, AppDir} = get_deps_dir(Config, Dep#dep.app),
@@ -629,6 +632,16 @@ update_deps_int(Config0, UDD) ->
end, {Config1, lists:umerge(lists:sort(UpdatedDeps),
lists:sort(UDD))}, UpdatedDeps).
+should_skip_update_dep(Config, Dep) ->
+ {true, AppDir} = get_deps_dir(Config, Dep#dep.app),
+ {true, AppFile} = rebar_app_utils:is_app_dir(AppDir),
+ case rebar_app_utils:is_skipped_app(Config, AppFile) of
+ {_Config, {true, _SkippedApp}} ->
+ true;
+ _ ->
+ false
+ end.
+
%% Recursively walk the deps and build a list of them.
collect_deps(Dir, C) ->
case file:set_cwd(Dir) of