From d81e03cfe1115c986baf515621dec709ac31c790 Mon Sep 17 00:00:00 2001 From: Henrik Sandklef Date: Tue, 29 Jul 2025 11:06:03 +0200 Subject: [PATCH] add support for scancode output format 4.1.0 --- README.md | 2 +- scarfer/scan_interface.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ad73762..be7b343 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ $ scarfer example-data/cairo-1.16.0-scan.json -ef "/.*pdi.*\.c$" * [Scancode](https://github.com/nexB/scancode-toolkit) Toolkit, version 21 and upwards -* [Scancode](https://github.com/nexB/scancode-toolkit) Output Format version 1.0.0, 2.0.0, 3.0, 3.2, 4.0 +* [Scancode](https://github.com/nexB/scancode-toolkit) Output Format version 1.0.0, 2.0.0, 3.0, 3.2, 4.0, 4.1.0 # Hints on source code scanners diff --git a/scarfer/scan_interface.py b/scarfer/scan_interface.py index 215ba69..2e24f3a 100644 --- a/scarfer/scan_interface.py +++ b/scarfer/scan_interface.py @@ -108,6 +108,9 @@ def check_file_format(self): elif self.scancode_format[:3] == "4.0": self.copyright_value = "copyright" self.licenses_value = "license_detections" + elif self.scancode_format[:3] == "4.1": + self.copyright_value = "copyright" + self.licenses_value = "license_detections" else: self.licenses_value = "licenses" self.copyright_value = "value" @@ -145,7 +148,7 @@ def read(self): matches = [] for le in f[self.licenses_value]: vers = self.scancode_format[:3] - if vers == "3.0" or vers == "3.2" or vers == "4.0": + if vers == "3.0" or vers == "3.2" or vers == "4.0" or vers == "4.1": for match in le['matches']: matches.append({ "key": match['license_expression'], @@ -173,6 +176,11 @@ def read(self): _file['license']['expressions'] = [f['detected_license_expression']] else: _file['license']['expressions'] = [] + elif self.scancode_format[:3] == "4.1": + if f['detected_license_expression']: + _file['license']['expressions'] = [f['detected_license_expression']] + else: + _file['license']['expressions'] = [] else: _file['license']['expressions'] = f['license_expressions'] _file['license']['matches'] = matches