diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_prv_clean.erl | 25 | ||||
-rw-r--r-- | src/rebar_prv_compile.erl | 2 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/rebar_prv_clean.erl b/src/rebar_prv_clean.erl index 72b85dc..88587a1 100644 --- a/src/rebar_prv_clean.erl +++ b/src/rebar_prv_clean.erl @@ -27,18 +27,39 @@ init(State) -> {example, "rebar clean"}, {short_desc, "Remove compiled beam files from apps."}, {desc, ""}, - {opts, []}])), + {opts, [{all, $a, "all", undefined, "Clean all apps include deps"}]}])), {ok, State1}. -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. 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, + 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, ProjectApps), + end, Apps), + {ok, State}. -spec format_error(any(), rebar_state:t()) -> {iolist(), rebar_state:t()}. format_error(Reason, State) -> {io_lib:format("~p", [Reason]), State}. + +%% =================================================================== +%% Internal functions +%% =================================================================== + +handle_args(State) -> + {Args, _} = rebar_state:command_parsed_args(State), + All = proplists:get_value(all, Args, false), + {all, All}. diff --git a/src/rebar_prv_compile.erl b/src/rebar_prv_compile.erl index b5beca9..288a260 100644 --- a/src/rebar_prv_compile.erl +++ b/src/rebar_prv_compile.erl @@ -31,7 +31,7 @@ init(State) -> {short_desc, "Compile apps .app.src and .erl files."}, {desc, ""}, {opts, [ - {jobs, $j, "jobs", integer, JobsHelp} + {jobs, $j, "jobs", integer, JobsHelp} ]}])), {ok, State1}. |