diff --git a/apps/rebar/src/rebar_prv_clean.erl b/apps/rebar/src/rebar_prv_clean.erl index ffa2584eb..cff7636f9 100644 --- a/apps/rebar/src/rebar_prv_clean.erl +++ b/apps/rebar/src/rebar_prv_clean.erl @@ -12,7 +12,7 @@ -include("rebar.hrl"). -define(PROVIDER, clean). --define(DEPS, [app_discovery, install_deps]). +-define(DEPS, []). %% =================================================================== %% Public API @@ -37,7 +37,13 @@ do(State) -> Providers = rebar_state:providers(State), {All, Profiles, Specific} = handle_args(State), - State1 = rebar_state:apply_profiles(State, [list_to_atom(X) || X <- Profiles]), + %% Invoke provider deps as the desired profile(s) so the discovery of + %% apps respects profile options. + State0 = rebar_state:command_args( + State, + lists:join(",", ["default"|Profiles]) ++ ["install_deps"] + ), + {ok, State1} = rebar_prv_as:do(State0), Cwd = rebar_dir:get_cwd(), rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, State1), @@ -45,10 +51,10 @@ do(State) -> if All; Specific =/= [] -> DepsDir = rebar_dir:deps_dir(State1), DepsDirs = filelib:wildcard(filename:join(DepsDir, "*")), - ProjectApps = rebar_state:project_apps(State), - Deps = rebar_state:all_deps(State), + ProjectApps = rebar_state:project_apps(State1), + Deps = rebar_state:all_deps(State1), KnownAppNames = [rebar_app_info:name(App) || App <- ProjectApps++Deps], - ParsedApps = rebar_app_discover:find_apps(DepsDirs, all, State), + ParsedApps = rebar_app_discover:find_apps(DepsDirs, all, State1), AllApps = ProjectApps ++ Deps ++ [App || App <- ParsedApps, not lists:member(rebar_app_info:name(App), diff --git a/apps/rebar/test/rebar_as_SUITE.erl b/apps/rebar/test/rebar_as_SUITE.erl index 78ea8aec9..fce1efcd9 100644 --- a/apps/rebar/test/rebar_as_SUITE.erl +++ b/apps/rebar/test/rebar_as_SUITE.erl @@ -198,4 +198,5 @@ clean_as_profile(Config) -> rebar_test_utils:run_and_check(Config, [], ["clean", "-a", "-p", "foo"], - {ok, [{app, Name, invalid}]}). + {ok, [{app, Name, invalid}]}), + ok.