Bladeren bron

Merge pull request #1031 from tsloughter/master

add profile option to clean task
pull/1035/head
Fred Hebert 9 jaren geleden
bovenliggende
commit
084fd3116a
2 gewijzigde bestanden met toevoegingen van 35 en 13 verwijderingen
  1. +15
    -11
      src/rebar_prv_clean.erl
  2. +20
    -2
      test/rebar_as_SUITE.erl

+ 15
- 11
src/rebar_prv_clean.erl Bestand weergeven

@ -27,32 +27,35 @@ init(State) ->
{example, "rebar3 clean"},
{short_desc, "Remove compiled beam files from apps."},
{desc, "Remove compiled beam files from apps."},
{opts, [{all, $a, "all", undefined, "Clean all apps include deps"}]}])),
{opts, [{all, $a, "all", undefined, "Clean all apps include deps"},
{profile, $p, "profile", string, "Clean under profile. Equivalent to `rebar3 as <profile> clean`"}]}])),
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
Providers = rebar_state:providers(State),
{all, All} = handle_args(State),
{All, Profiles} = handle_args(State),
State1 = rebar_state:apply_profiles(State, [list_to_atom(X) || X <- Profiles]),
Cwd = rebar_dir:get_cwd(),
rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, State),
rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, State1),
case All of
true ->
DepsDir = rebar_dir:deps_dir(State),
DepsDir = rebar_dir:deps_dir(State1),
AllApps = rebar_app_discover:find_apps([filename:join(DepsDir, "*")], all),
clean_apps(State, Providers, AllApps);
clean_apps(State1, Providers, AllApps);
false ->
ProjectApps = rebar_state:project_apps(State),
clean_apps(State, Providers, ProjectApps)
ProjectApps = rebar_state:project_apps(State1),
clean_apps(State1, Providers, ProjectApps)
end,
clean_extras(State),
clean_extras(State1),
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, State),
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, State1),
{ok, State}.
{ok, State1}.
-spec format_error(any()) -> iolist().
format_error(Reason) ->
@ -78,4 +81,5 @@ clean_extras(State) ->
handle_args(State) ->
{Args, _} = rebar_state:command_parsed_args(State),
All = proplists:get_value(all, Args, false),
{all, All}.
Profiles = proplists:get_all_values(profile, Args),
{All, Profiles}.

+ 20
- 2
test/rebar_as_SUITE.erl Bestand weergeven

@ -13,7 +13,8 @@
as_comma_then_space/1,
as_dir_name/1,
as_with_task_args/1,
warn_on_empty_profile/1]).
warn_on_empty_profile/1,
clean_as_profile/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@ -32,7 +33,7 @@ all() -> [as_basic, as_multiple_profiles, as_multiple_tasks,
as_multiple_profiles_multiple_tasks,
as_comma_placement, as_comma_then_space,
as_dir_name, as_with_task_args,
warn_on_empty_profile].
warn_on_empty_profile, clean_as_profile].
as_basic(Config) ->
AppDir = ?config(apps, Config),
@ -166,3 +167,20 @@ warn_match(App, History) ->
false
end,
History).
clean_as_profile(Config) ->
AppDir = ?config(apps, Config),
Name = rebar_test_utils:create_random_name("clean_as_profile_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
rebar_test_utils:run_and_check(Config,
[],
["as", "foo", "compile"],
{ok, [{app, Name, valid}]}),
rebar_test_utils:run_and_check(Config,
[],
["clean", "-a", "-p", "foo"],
{ok, [{app, Name, invalid}]}).

Laden…
Annuleren
Opslaan