@@ -151,10 +151,10 @@ add_opt(Opts1, Opts2) ->
151
151
del_opt (Opts1 , Opts2 ) ->
152
152
lists :foldl (fun ({deps , Value }, OptsAcc ) ->
153
153
OldValue = ? MODULE :get (OptsAcc , {deps ,default }, []),
154
- set (OptsAcc , {deps ,default }, OldValue -- Value );
154
+ set (OptsAcc , {deps ,default }, del_dep ( OldValue , Value ) );
155
155
({Key , Value }, OptsAcc ) ->
156
156
OldValue = ? MODULE :get (OptsAcc , Key , []),
157
- set (OptsAcc , Key , OldValue -- Value )
157
+ set (OptsAcc , Key , del_dep ( OldValue , Value ) )
158
158
end , Opts2 , Opts1 ).
159
159
160
160
override_opt (Opts1 , Opts2 ) ->
@@ -164,6 +164,25 @@ override_opt(Opts1, Opts2) ->
164
164
set (OptsAcc , Key , Value )
165
165
end , Opts2 , Opts1 ).
166
166
167
+ % % @private
168
+ del_dep (OldValue , [Value ]) when is_atom (Value ) ->
169
+ NewValue = lists :keydelete (atom_to_binary (Value , utf8 ), 1 , OldValue ),
170
+ del_dep (NewValue , OldValue , [Value ]);
171
+ del_dep (OldValue , [{Value , _Version , _Source }]) ->
172
+ NewValue = lists :keydelete (atom_to_binary (Value , utf8 ), 1 , OldValue ),
173
+ del_dep (NewValue , OldValue , [{Value , _Version , _Source }]);
174
+ del_dep (OldValue , [Value |Values ]) ->
175
+ NewValue = del_dep (del_dep (OldValue , [Value ]), OldValue , [Value ]),
176
+ del_dep (NewValue , Values ).
177
+
178
+ % % @private
179
+ % % If the initial deletion did not work remove it as always
180
+ % % to ensure rebar3 at least maintains its old behaviour.
181
+ del_dep (OldValue , OldValue , Value ) ->
182
+ OldValue -- Value ;
183
+ del_dep (NewValue , _OldValue , _Value ) ->
184
+ NewValue .
185
+
167
186
% %
168
187
% % Function for dict:merge/3 (in merge_opts/2) to merge options by priority.
169
188
% %
0 commit comments