diff options
Diffstat (limited to 'src/rebar_prv_clean.erl')
-rw-r--r-- | src/rebar_prv_clean.erl | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/src/rebar_prv_clean.erl b/src/rebar_prv_clean.erl index 88587a1..a64e63a 100644 --- a/src/rebar_prv_clean.erl +++ b/src/rebar_prv_clean.erl @@ -35,19 +35,23 @@ do(State) -> ProjectApps = rebar_state:project_apps(State), {all, All} = handle_args(State), - Apps = case All of - true -> - DepsDir = rebar_state:get(State, deps_dir, ?DEFAULT_DEPS_DIR), - DepApps = rebar_app_discover:find_apps([DepsDir], all), - ProjectApps ++ DepApps; - false -> - ProjectApps - end, + case All of + true -> + DepsDir = rebar_state:get(State, deps_dir, ?DEFAULT_DEPS_DIR), + DepApps = rebar_app_discover:find_apps([DepsDir], all); + false -> + DepApps = [] + end, - lists:foreach(fun(AppInfo) -> - ?INFO("Cleaning out ~s...~n", [rebar_app_info:name(AppInfo)]), - rebar_erlc_compiler:clean(State, ec_cnv:to_list(rebar_app_info:dir(AppInfo))) - end, Apps), + %% Need to allow global config vars used on deps + %% Right now no way to differeniate and just give deps a new state + EmptyState = rebar_state:new(), + clean_apps(EmptyState, DepApps), + + Cwd = rebar_utils:get_cwd(), + rebar_hooks:run_compile_hooks(Cwd, pre_hooks, clean, State), + clean_apps(State, ProjectApps), + rebar_hooks:run_compile_hooks(Cwd, post_hooks, clean, State), {ok, State}. @@ -59,6 +63,19 @@ format_error(Reason, State) -> %% Internal functions %% =================================================================== +clean_apps(State, Apps) -> + lists:foreach(fun(AppInfo) -> + AppDir = rebar_app_info:dir(AppInfo), + C = rebar_config:consult(AppDir), + S = rebar_state:new(State, C, AppDir), + + ?INFO("Cleaning out ~s...~n", [rebar_app_info:name(AppInfo)]), + %% Legacy hook support + rebar_hooks:run_compile_hooks(AppDir, pre_hooks, clean, S), + rebar_erlc_compiler:clean(State, ec_cnv:to_list(rebar_app_info:dir(AppInfo))), + rebar_hooks:run_compile_hooks(AppDir, post_hooks, clean, S) + end, Apps). + handle_args(State) -> {Args, _} = rebar_state:command_parsed_args(State), All = proplists:get_value(all, Args, false), |