@@ -9,6 +9,7 @@ type conf = {
9
9
old_file : string ;
10
10
new_file : string ;
11
11
out_file : string option ;
12
+ filter : Atddiff .filter ;
12
13
json_defaults_old : bool ;
13
14
json_defaults_new : bool ;
14
15
exit_success : bool ;
@@ -38,6 +39,7 @@ let run conf =
38
39
else
39
40
let out_data =
40
41
Atddiff. compare_files
42
+ ~filter: conf.filter
41
43
~json_defaults_old: conf.json_defaults_old
42
44
~json_defaults_new: conf.json_defaults_new
43
45
conf.old_file conf.new_file in
@@ -91,6 +93,31 @@ let out_file_term : string option Term.t =
91
93
in
92
94
Arg. value (Arg. opt (Arg. some Arg. string ) None info)
93
95
96
+ let backward_term : bool Term.t =
97
+ let info =
98
+ Arg. info [" backward" ]
99
+ ~doc: " Ignore findings other than backward incompatibilies."
100
+ in
101
+ Arg. value (Arg. flag info)
102
+
103
+ let forward_term : bool Term.t =
104
+ let info =
105
+ Arg. info [" forward" ]
106
+ ~doc: " Ignore findings other than forward incompatibilies."
107
+ in
108
+ Arg. value (Arg. flag info)
109
+
110
+ let types_term : string list option Term.t =
111
+ let info =
112
+ Arg. info [" types" ]
113
+ ~docv: " TYPE_NAME1,TYPE_NAME2,..."
114
+ ~doc: " Select findings that affect these types. If no '--type' filter is \
115
+ provided, all types are selected. For example, \
116
+ '--type foo,bar' selects the findings that affect type 'foo', \
117
+ type 'bar', or both."
118
+ in
119
+ Arg. value (Arg. opt (Arg. some (Arg. list Arg. string )) None info)
120
+
94
121
let json_defaults_term : bool Term.t =
95
122
let info =
96
123
Arg. info [" json-defaults" ]
@@ -184,14 +211,32 @@ let man = [
184
211
let cmdline_term run =
185
212
let combine
186
213
old_file new_file out_file
214
+ backward forward types
187
215
json_defaults json_defaults_old json_defaults_new
188
216
exit_success version =
217
+ let filter =
218
+ let module A = Atddiff in
219
+ let backward = if backward then [A. Filter (A. Backward )] else [] in
220
+ let forward = if forward then [A. Filter (A. Forward )] else [] in
221
+ let types =
222
+ match types with
223
+ | None -> []
224
+ | Some types ->
225
+ [A. Or
226
+ (List. map (fun name ->
227
+ A. Filter (A. Affected_type_name name))
228
+ types)
229
+ ]
230
+ in
231
+ A. And (List. concat [backward; forward; types])
232
+ in
189
233
let json_defaults_old = json_defaults_old || json_defaults in
190
234
let json_defaults_new = json_defaults_new || json_defaults in
191
235
run {
192
236
old_file;
193
237
new_file;
194
238
out_file;
239
+ filter;
195
240
json_defaults_old;
196
241
json_defaults_new;
197
242
exit_success;
@@ -202,6 +247,9 @@ let cmdline_term run =
202
247
$ old_file_term
203
248
$ new_file_term
204
249
$ out_file_term
250
+ $ backward_term
251
+ $ forward_term
252
+ $ types_term
205
253
$ json_defaults_term
206
254
$ json_defaults_old_term
207
255
$ json_defaults_new_term
0 commit comments