diff options
author | Viacheslav V. Kovalev <kovyl2404@gmail.com> | 2015-04-22 18:56:15 +0300 |
---|---|---|
committer | Viacheslav V. Kovalev <kovyl2404@gmail.com> | 2015-04-22 18:56:15 +0300 |
commit | d821757152be83d2f473d4d4e2157dba72a6d345 (patch) | |
tree | ff6e34724e27f1644d6a8378fb1190853d85fc13 | |
parent | 0b682e364da25287aa45784150702013f4c4aee0 (diff) | |
parent | e255529da5c2366f1a9c4eb823d3c3d02c237eae (diff) |
Merge remote-tracking branch 'my/app-discover-profile-duplication' into app-discover-profile-duplication
-rw-r--r-- | src/rebar_state.erl | 7 | ||||
-rw-r--r-- | src/rebar_utils.erl | 15 | ||||
-rw-r--r-- | test/rebar_utils_SUITE.erl | 16 |
3 files changed, 8 insertions, 30 deletions
diff --git a/src/rebar_state.erl b/src/rebar_state.erl index f73370b..c2e479d 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -207,7 +207,8 @@ apply_profiles(State, Profile) when not is_list(Profile) -> apply_profiles(State, [Profile]); apply_profiles(State, [default]) -> State; -apply_profiles(State=#state_t{opts=Opts, current_profiles=CurrentProfiles}, Profiles) -> +apply_profiles(State=#state_t{default = Defaults, current_profiles=CurrentProfiles}, Profiles) -> + AppliedProfiles = deduplicate(CurrentProfiles ++ Profiles), ConfigProfiles = rebar_state:get(State, profiles, []), NewOpts = lists:foldl(fun(default, OptsAcc) -> @@ -215,8 +216,8 @@ apply_profiles(State=#state_t{opts=Opts, current_profiles=CurrentProfiles}, Prof (Profile, OptsAcc) -> ProfileOpts = dict:from_list(proplists:get_value(Profile, ConfigProfiles, [])), merge_opts(Profile, ProfileOpts, OptsAcc) - end, Opts, Profiles), - State#state_t{current_profiles = deduplicate(CurrentProfiles ++ Profiles), opts=NewOpts}. + end, Defaults, AppliedProfiles), + State#state_t{current_profiles = AppliedProfiles, opts=NewOpts}. deduplicate(Profiles) -> do_deduplicate(lists:reverse(Profiles), []). diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index 76be9a8..004ed35 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -257,20 +257,7 @@ tup_sort(List) -> tup_umerge([], Olds) -> Olds; tup_umerge([New|News], Olds) -> - reverse_deduplicate( umerge(News, Olds, [], New) ). - -reverse_deduplicate(List) -> - lists:reverse( do_deduplicate(lists:reverse(List), []) ). - -do_deduplicate([], Acc) -> - Acc; -do_deduplicate([Value | Rest], Acc) -> - case lists:member(Value, Acc) of - true -> - do_deduplicate(Rest, Acc); - false -> - do_deduplicate(Rest, [Value | Acc]) - end. + lists:reverse( umerge(News, Olds, [], New) ). %% This is equivalent to umerge2_2 in the stdlib, except we use the expanded %% value/key only to compare diff --git a/test/rebar_utils_SUITE.erl b/test/rebar_utils_SUITE.erl index 98e7e58..ce26bbc 100644 --- a/test/rebar_utils_SUITE.erl +++ b/test/rebar_utils_SUITE.erl @@ -21,8 +21,7 @@ task_with_flag_with_trailing_comma/1, task_with_flag_with_commas/1, task_with_multiple_flags/1, - special_task_do/1, - tup_umerge_deduplication/1]). + special_task_do/1]). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -30,8 +29,7 @@ all() -> - [{group, args_to_tasks}, - tup_umerge_deduplication + [{group, args_to_tasks} ]. groups() -> @@ -120,12 +118,4 @@ special_task_do(_Config) -> [{"foo", []}, {"do", ["bar,", "baz"]}] = rebar_utils:args_to_tasks(["foo,", "do", "bar,", - "baz"]). - -tup_umerge_deduplication(_Config) -> - Old = [{key,c},{key,b},{key,a}], - New = [{key, a}], - ?assertEqual( - [{key, a}, {key, c}, {key, b}], - rebar_utils:tup_umerge(New, Old) - ). + "baz"]).
\ No newline at end of file |