diff options
-rw-r--r-- | src/rebar_opts.erl | 2 | ||||
-rw-r--r-- | src/rebar_relx.erl | 23 |
2 files changed, 3 insertions, 22 deletions
diff --git a/src/rebar_opts.erl b/src/rebar_opts.erl index 97f39b8..b02a504 100644 --- a/src/rebar_opts.erl +++ b/src/rebar_opts.erl @@ -115,6 +115,8 @@ merge_opts(NewOpts, OldOpts) -> Value; (mib_first_files, NewValue, OldValue) -> OldValue ++ NewValue; + (relx, NewValue, OldValue) -> + rebar_utils:tup_umerge(OldValue, NewValue); (_Key, NewValue, OldValue) when is_list(NewValue) -> case io_lib:printable_list(NewValue) of true when NewValue =:= [] -> diff --git a/src/rebar_relx.erl b/src/rebar_relx.erl index 36a24f0..cb8fac5 100644 --- a/src/rebar_relx.erl +++ b/src/rebar_relx.erl @@ -30,9 +30,8 @@ do(Module, Command, Provider, State) -> relx:main([{lib_dirs, LibDirs} ,{caller, api} | output_dir(OutputDir, Options)], AllOptions); Config -> - Config1 = update_config(Config), relx:main([{lib_dirs, LibDirs} - ,{config, Config1} + ,{config, Config} ,{caller, api} | output_dir(OutputDir, Options)], AllOptions) end, rebar_hooks:run_all_hooks(Cwd, post, Provider, Providers, State), @@ -46,26 +45,6 @@ do(Module, Command, Provider, State) -> format_error(Reason) -> io_lib:format("~p", [Reason]). -%% To handle profiles rebar3 expects the provider to use the first entry -%% in a configuration key-value list as the value of a key if dups exist. -%% This does not work with relx. Some config options must not lose their -%% order (release which has an extends option is one). So here we pull out -%% options that are special so we can reverse the rest so what we expect -%% from a rebar3 profile is what we get on the relx side. --define(SPECIAL_KEYS, [release, vm_args, sys_config, overlay_vars, lib_dirs]). - -update_config(Config) -> - {Special, Other} = - lists:foldl(fun(Tuple, {SpecialAcc, OtherAcc}) when is_tuple(Tuple) -> - case lists:member(element(1, Tuple), ?SPECIAL_KEYS) of - true -> - {[Tuple | SpecialAcc], OtherAcc}; - false -> - {SpecialAcc, [Tuple | OtherAcc]} - end - end, {[], []}, Config), - lists:reverse(Special) ++ Other. - %% Don't override output_dir if the user passed one on the command line output_dir(OutputDir, Options) -> [{output_dir, OutputDir} || not(lists:member("-o", Options)) |