@@ -75,7 +75,7 @@ def initialize(
7575 elif os .path .isfile (element ):
7676 files_to_scan .append (element )
7777 else :
78- log .error ('detect-secrets: %s : No such file or directory' , element )
78+ log .error ('detect-secrets: "%s" : No such file or directory' , element )
7979
8080 if not files_to_scan :
8181 return output
@@ -262,7 +262,7 @@ def trim_baseline_of_removed_secrets(results, baseline, filelist):
262262 return updated
263263
264264
265- def merge_baseline (old_baseline , new_baseline ):
265+ def merge_baseline (old_baseline , new_baseline , keep_old_results = False ):
266266 """Updates baseline to be compatible with the latest version of
267267 detect-secrets.
268268
@@ -283,13 +283,15 @@ def merge_baseline(old_baseline, new_baseline):
283283 new_baseline ['results' ] = merge_results (
284284 old_baseline ['results' ],
285285 new_baseline ['results' ],
286+ keep_old_results ,
286287 )
287288
288289 return new_baseline
289290
290291
291- def merge_results (old_results , new_results ):
292+ def merge_results (old_results , new_results , keep_old_results = False ):
292293 """Update results in new baseline with audit information from old baseline.
294+ Unless keep_old_results is set True
293295
294296 Secrets only appear in old baseline are ignored.
295297
@@ -302,16 +304,29 @@ def merge_results(old_results, new_results):
302304 :type new_results: dict
303305 :param new_results: results to replaced status quo
304306
307+ :type keep_old_results: bool
308+ :param keep_old_results: if set true keep old results in new_results
309+
305310 :rtype: dict
306311 """
307312 for filename , old_secrets in old_results .items ():
308- if filename not in new_results :
313+ next_iter = False
314+ if not keep_old_results and filename not in new_results :
309315 continue
310316
311317 old_secrets_mapping = {}
312318 for old_secret in old_secrets :
313319 old_secrets_mapping [old_secret ['hashed_secret' ]] = old_secret
314320
321+ if keep_old_results and filename not in new_results :
322+ if filename not in new_results :
323+ new_results [filename ] = []
324+ new_results [filename ].append (old_secret )
325+ next_iter = True
326+
327+ if next_iter :
328+ continue
329+
315330 for new_secret in new_results [filename ]:
316331 if new_secret ['hashed_secret' ] not in old_secrets_mapping :
317332 # We don't join the two secret sets, because if the newer
0 commit comments