Skip to content

Commit 184a6d2

Browse files
committed
Update licenseDeclared to output license info (json)
Previously the `licenseDeclared` data for `spdxjson` was set to license reference of type `LicenseRef-df8cb33` which is not informative. This change updates that data to the actual license info, f.e. `MIT`, in case a license is declared, or the `LicenseRef-df8cb33` value if it's not Signed-off-by: Ivana Atanasova <[email protected]>
1 parent 6de507c commit 184a6d2

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

tern/formats/spdx/spdxjson/package_helpers.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,21 @@
77
Helper functions for packages in SPDX JSON document creation
88
"""
99

10+
from license_expression import get_spdx_licensing
1011
from tern.report import content
1112
from tern.formats.spdx import spdx_common
1213
from tern.formats.spdx.spdxjson import formats as json_formats
1314

1415

16+
def is_spdx_license_expression(license_data):
17+
'''Return True if the license is a valid SPDX license expression, else
18+
return False'''
19+
licensing = get_spdx_licensing()
20+
if ',' in license_data:
21+
license_data = license_data.replace(',', ' ')
22+
return licensing.validate(license_data).errors == []
23+
24+
1525
def get_package_comment(package):
1626
'''Given a package object, return a PackageComment string for a list of
1727
NoticeOrigin objects'''
@@ -23,6 +33,14 @@ def get_package_comment(package):
2333
return comment
2434

2535

36+
def get_package_license_declared(package_license_declared):
37+
if package_license_declared:
38+
if is_spdx_license_expression(package_license_declared):
39+
return package_license_declared
40+
return spdx_common.get_license_ref(package_license_declared)
41+
return 'NONE'
42+
43+
2644
def get_source_package_dict(package, template):
2745
'''''Given a package object and its SPDX template mapping, return a SPDX
2846
JSON dictionary representation of the associated source package.
@@ -39,9 +57,8 @@ def get_source_package_dict(package, template):
3957
mapping['PackageDownloadLocation'] else 'NOASSERTION',
4058
'filesAnalyzed': False, # always false for packages
4159
'licenseConcluded': 'NOASSERTION', # always NOASSERTION
42-
'licenseDeclared': spdx_common.get_license_ref(
43-
mapping['PackageLicenseDeclared']) if
44-
mapping['PackageLicenseDeclared'] else 'NONE',
60+
'licenseDeclared': get_package_license_declared(
61+
mapping['PackageLicenseDeclared']),
4562
'copyrightText': mapping['PackageCopyrightText'] if
4663
mapping['PackageCopyrightText'] else'NONE',
4764
'comment': json_formats.source_package_comment
@@ -65,9 +82,8 @@ def get_package_dict(package, template):
6582
mapping['PackageDownloadLocation'] else 'NOASSERTION',
6683
'filesAnalyzed': False, # always false for packages
6784
'licenseConcluded': 'NOASSERTION', # always NOASSERTION
68-
'licenseDeclared': spdx_common.get_license_ref(
69-
mapping['PackageLicenseDeclared']) if
70-
mapping['PackageLicenseDeclared'] else 'NONE',
85+
'licenseDeclared': get_package_license_declared(
86+
mapping['PackageLicenseDeclared']),
7187
'copyrightText': mapping['PackageCopyrightText'] if
7288
mapping['PackageCopyrightText'] else'NONE',
7389
'comment': get_package_comment(package)

0 commit comments

Comments
 (0)