Skip to content

Commit 873514c

Browse files
authored
Support spdx format result (#136)
* Support spdx format result * Add the new column of dependencies * Add exception of spdx for windows environment --------- Signed-off-by: Jiyeong Seok <[email protected]>
1 parent bf1abc0 commit 873514c

File tree

15 files changed

+108
-67
lines changed

15 files changed

+108
-67
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ lxml
44
virtualenv
55
pyyaml
66
lastversion
7-
fosslight_util>=1.4.0
7+
fosslight_util>=1.4.21
88
PyGithub
99
requirements-parser

src/fosslight_dependency/_help.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
-p <input_path>\t\t Enter the path where the script will be run.
3434
-o <output_path>\t\t Output path
3535
\t\t\t\t\t(If you want to generate the specific file name, add the output path with file name.)
36-
-f <format>\t\t\t Output file format (excel, csv, opossum, yaml)
36+
-f <format>\t\t\t Output file format (excel, csv, opossum, yaml, spdx-tag, spdx-yaml, spdx-json, spdx-xml)
3737
--direct\t\t\t Print the direct/transitive dependency type in comment.
3838
\t\tChoice 'True' or 'False'. (default:True)
3939
--notice\t\t\t Print the open source license notice text.

src/fosslight_dependency/package_manager/Android.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def parse_oss_information(self, f_name):
5151
continue
5252

5353
comment_list = []
54+
deps_list = []
5455
if self.direct_dep:
5556
dep_key = f"{oss_name}({oss_version})"
5657
if self.total_dep_list:
@@ -62,11 +63,12 @@ def parse_oss_information(self, f_name):
6263
comment_list.append('transitive')
6364
try:
6465
if dep_key in self.relation_tree:
65-
comment_list.extend(self.relation_tree[dep_key])
66+
deps_list.extend(self.relation_tree[dep_key])
6667
except Exception as e:
6768
logger.error(f"Fail to find oss scope in dependency tree: {e}")
68-
comment = ', '.join(comment_list)
69+
comment = ','.join(comment_list)
70+
deps = ','.join(deps_list)
6971

70-
sheet_list.append([manifest_file, oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
72+
sheet_list.append([manifest_file, oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
7173

7274
return sheet_list

src/fosslight_dependency/package_manager/Carthage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def parse_oss_information(self, f_name):
9797
comment = 'transitive'
9898

9999
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
100-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
100+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, ''])
101101

102102
except Exception as e:
103103
logger.warning(f"Failed to parse oss information: {e}")

src/fosslight_dependency/package_manager/Cocoapods.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def parse_oss_information(self, f_name):
8585
for pod_oss_name_origin, pod_oss_version in pod_item_list.items():
8686
try:
8787
comment_list = []
88+
deps_list = []
8889
if self.direct_dep:
8990
if pod_oss_name_origin in self.direct_dep_list:
9091
comment_list.append('direct')
@@ -93,8 +94,9 @@ def parse_oss_information(self, f_name):
9394
if f'{pod_oss_name_origin}({oss_version})' in self.relation_tree:
9495
rel_items = [f'{self.package_manager_name}:{ri}'
9596
for ri in self.relation_tree[f'{pod_oss_name_origin}({oss_version})']]
96-
comment_list.extend(rel_items)
97-
comment = ', '.join(comment_list)
97+
deps_list.extend(rel_items)
98+
comment = ','.join(comment_list)
99+
deps = ','.join(deps_list)
98100

99101
pod_oss_name = pod_oss_name_origin
100102
if '/' in pod_oss_name_origin:
@@ -131,7 +133,7 @@ def parse_oss_information(self, f_name):
131133
with spec version({oss_version})')
132134
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
133135
f'{self.package_manager_name}:{pod_oss_name_origin}',
134-
pod_oss_version, license_name, dn_loc, homepage, '', '', comment])
136+
pod_oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
135137
except Exception as e:
136138
logger.warning(f"Fail to get {pod_oss_name_origin}:{e}")
137139

src/fosslight_dependency/package_manager/Go.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def parse_oss_information(self, f_name):
9090
oss_version = oss_origin_version[1:]
9191

9292
comment_list = []
93+
deps_list = []
9394
if self.direct_dep:
9495
if indirect in dep_item:
9596
if dep_item[indirect]:
@@ -102,7 +103,7 @@ def parse_oss_information(self, f_name):
102103
if f'{package_path}({oss_version})' in self.relation_tree:
103104
rel_items = [f'{self.package_manager_name}:{ri}'
104105
for ri in self.relation_tree[f'{package_path}({oss_version})']]
105-
comment_list.extend(rel_items)
106+
deps_list.extend(rel_items)
106107

107108
homepage_set = []
108109
homepage = self.dn_url + package_path
@@ -145,8 +146,9 @@ def parse_oss_information(self, f_name):
145146
logging.warning(f"Fail to parse {package_path} in go mod : {e}")
146147
continue
147148

148-
comment = ', '.join(comment_list)
149+
comment = ','.join(comment_list)
150+
deps = ','.join(deps_list)
149151
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
150-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
152+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
151153

152154
return sheet_list

src/fosslight_dependency/package_manager/Gradle.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def parse_oss_information(self, f_name):
7575
homepage = f"{self.dn_url}{group_id}/{artifact_id}"
7676

7777
comment_list = []
78+
deps_list = []
7879
if self.direct_dep:
7980
if len(self.direct_dep_list) > 0:
8081
if dep_key in self.direct_dep_list:
@@ -83,13 +84,14 @@ def parse_oss_information(self, f_name):
8384
comment_list.append('transitive')
8485
try:
8586
if dep_key in self.relation_tree:
86-
comment_list.extend(self.relation_tree[dep_key])
87+
deps_list.extend(self.relation_tree[dep_key])
8788
except Exception as e:
8889
logger.error(f"Fail to find oss scope in dependency tree: {e}")
89-
comment = ', '.join(comment_list)
90+
comment = ','.join(comment_list)
91+
deps = ','.join(deps_list)
9092

9193
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
92-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
94+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
9395

9496
return sheet_list
9597

src/fosslight_dependency/package_manager/Helm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,6 @@ def parse_oss_information(self, f_name):
9090
continue
9191

9292
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
93-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
93+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, ''])
9494

9595
return sheet_list

src/fosslight_dependency/package_manager/Maven.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,19 +239,21 @@ def parse_oss_information(self, f_name):
239239

240240
dep_key = f"{oss_name}({version})"
241241
comment_list = []
242+
deps_list = []
242243
if self.direct_dep:
243244
if dep_key in self.direct_dep_list:
244245
comment_list.append('direct')
245246
else:
246247
comment_list.append('transitive')
247248
try:
248249
if dep_key in self.relation_tree:
249-
comment_list.extend(self.relation_tree[dep_key])
250+
deps_list.extend(self.relation_tree[dep_key])
250251
except Exception as e:
251252
logger.error(f"Fail to find oss scope in dependency tree: {e}")
252-
comment = ', '.join(comment_list)
253+
comment = ','.join(comment_list)
254+
deps = ','.join(deps_list)
253255

254256
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
255-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
257+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
256258

257259
return sheet_list

src/fosslight_dependency/package_manager/Npm.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -149,32 +149,34 @@ def parse_oss_information(self, f_name):
149149
homepage = self.dn_url + oss_init_name
150150

151151
comment_list = []
152-
if self.direct_dep:
153-
if f'{oss_init_name}({oss_version})' in self.relation_tree[self.package_name]:
154-
comment_list.append('direct')
155-
else:
156-
comment_list.append('transitive')
157-
152+
deps_list = []
153+
if self.direct_dep and len(self.relation_tree) > 0:
158154
if self.package_name == f'{oss_init_name}({oss_version})':
159155
comment_list.append('root package')
156+
else:
157+
if f'{oss_init_name}({oss_version})' in self.relation_tree[self.package_name]:
158+
comment_list.append('direct')
159+
else:
160+
comment_list.append('transitive')
160161

161162
if f'{oss_init_name}({oss_version})' in self.relation_tree:
162163
rel_items = [f'npm:{ri}' for ri in self.relation_tree[f'{oss_init_name}({oss_version})']]
163-
comment_list.extend(rel_items)
164+
deps_list.extend(rel_items)
164165

165166
manifest_file_path = os.path.join(package_path, const.SUPPORT_PACKAE.get(self.package_manager_name))
166167
multi_license, license_comment, multi_flag = check_multi_license(license_name, manifest_file_path)
167168

168-
comment = ', '.join(comment_list)
169+
comment = ','.join(comment_list)
170+
deps = ','.join(deps_list)
169171
if multi_flag:
170172
comment = f'{comment}, {license_comment}'
171173
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
172-
oss_name, oss_version, multi_license, dn_loc, homepage, '', '', comment])
174+
oss_name, oss_version, multi_license, dn_loc, homepage, '', '', comment, deps])
173175
else:
174176
license_name = license_name.replace(",", "")
175177
license_name = check_unknown_license(license_name, manifest_file_path)
176178
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
177-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
179+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
178180

179181
return sheet_list
180182

0 commit comments

Comments
 (0)