@@ -51,25 +51,33 @@ class LicensesReference(PostScanPlugin):
51
51
sort_order = 500
52
52
53
53
options = [
54
- PluggableCommandLineOption (('--licenses-reference' ,),
55
- is_flag = True , default = False ,
54
+ PluggableCommandLineOption (('--no-licenses-reference' ,),
55
+ is_flag = True ,
56
+ default = True ,
56
57
help = 'Include a reference of all the licenses referenced in this '
57
58
'scan with the data details and full texts.' ,
58
59
help_group = POST_SCAN_GROUP )
59
60
]
60
61
61
- def is_enabled (self , licenses_reference , ** kwargs ):
62
- return licenses_reference
62
+ def is_enabled (self , no_licenses_reference , ** kwargs ):
63
+ return no_licenses_reference
63
64
64
- def process_codebase (self , codebase , licenses_reference , ** kwargs ):
65
+ def process_codebase (self , codebase , no_licenses_reference , ** kwargs ):
65
66
"""
66
67
Get unique License and Rule data from all license detections in a codebase-level
67
68
list and only refer to them in the resource level detections.
68
69
"""
69
70
licexps = []
70
71
rules_data = []
71
72
73
+ if not hasattr (codebase .attributes , 'licenses' ):
74
+ return
75
+
76
+ has_packages = False
72
77
if hasattr (codebase .attributes , 'packages' ):
78
+ has_packages = True
79
+
80
+ if has_packages :
73
81
codebase_packages = codebase .attributes .packages
74
82
for pkg in codebase_packages :
75
83
rules_data .extend (
@@ -78,40 +86,58 @@ def process_codebase(self, codebase, licenses_reference, **kwargs):
78
86
)
79
87
)
80
88
licexps .append (pkg ['declared_license_expression' ])
89
+
90
+ # This license rules reference data is duplicate as `licenses` is a
91
+ # top level summary of all unique license detections but this function
92
+ # is called as the side effect is removing the reference attributes
93
+ # from license matches
94
+ try :
95
+ _discard = get_license_rules_reference_data (codebase .attributes .licenses )
96
+ except KeyError :
97
+ pass
81
98
82
99
for resource in codebase .walk ():
83
100
84
101
# Get license_expressions from both package and license detections
85
102
license_licexp = getattr (resource , 'detected_license_expression' )
86
103
if license_licexp :
87
104
licexps .append (license_licexp )
88
- package_data = getattr (resource , 'package_data' , []) or []
89
- package_licexps = [
90
- pkg ['declared_license_expression' ]
91
- for pkg in package_data
92
- ]
93
- licexps .extend (package_licexps )
94
-
95
- # Get license matches from both package and license detections
96
- package_license_detections = []
97
- for pkg in package_data :
98
- if not pkg ['license_detections' ]:
99
- continue
100
-
101
- package_license_detections .extend (pkg ['license_detections' ])
102
-
103
- rules_data .extend (
104
- get_license_rules_reference_data (license_detections = package_license_detections )
105
- )
105
+
106
+ if has_packages :
107
+ package_data = getattr (resource , 'package_data' , []) or []
108
+ package_licexps = [
109
+ pkg ['declared_license_expression' ]
110
+ for pkg in package_data
111
+ ]
112
+ licexps .extend (package_licexps )
113
+
114
+ # Get license matches from both package and license detections
115
+ package_license_detections = []
116
+ for pkg in package_data :
117
+ if not pkg ['license_detections' ]:
118
+ continue
119
+
120
+ package_license_detections .extend (pkg ['license_detections' ])
121
+
122
+ try :
123
+ rules_data .extend (
124
+ get_license_rules_reference_data (license_detections = package_license_detections )
125
+ )
126
+ except KeyError :
127
+ pass
106
128
107
129
license_detections = getattr (resource , 'license_detections' , []) or []
108
130
license_clues = getattr (resource , 'license_clues' , []) or []
109
- rules_data .extend (
110
- get_license_rules_reference_data (
111
- license_detections = license_detections ,
112
- license_clues = license_clues ,
131
+
132
+ try :
133
+ rules_data .extend (
134
+ get_license_rules_reference_data (
135
+ license_detections = license_detections ,
136
+ license_clues = license_clues ,
137
+ )
113
138
)
114
- )
139
+ except KeyError :
140
+ pass
115
141
116
142
codebase .save_resource (resource )
117
143
@@ -122,6 +148,12 @@ def process_codebase(self, codebase, licenses_reference, **kwargs):
122
148
codebase .attributes .rule_references .extend (rule_references )
123
149
124
150
151
+ def get_matched_text_from_reference_data (codebase , rule_identifier ):
152
+ for rule_reference_data in codebase .attributes .rule_references :
153
+ if rule_reference_data ["rule_identifier" ] == rule_identifier :
154
+ matched_text = getattr (rule_reference_data , "matched_text" , None ) or None
155
+ return matched_text
156
+
125
157
def get_license_references (license_expressions , licensing = Licensing ()):
126
158
"""
127
159
Get a list of unique License data from a list of `license_expression` strings.
0 commit comments