Skip to content

Commit 103d080

Browse files
authored
Merge pull request #62 from fosslight/develop
Add maven scope into comment of FOSSLight report
2 parents 3f040ae + 3e082e1 commit 103d080

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

src/fosslight_dependency/_package_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def check_and_run_license_scanner(platform, license_scanner_bin, file_dir):
151151
else:
152152
ret = os.system(run_license_scanner)
153153
if ret != 0:
154-
logger.info("Cannot find the license name with scanner bin.")
154+
logger.info("=> (No error) This is the information that the license was not found.")
155155
return ""
156156

157157
fp = open(tmp_output_file_name, "r", encoding='utf8')

src/fosslight_dependency/package_manager/Maven.py

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import shutil
1010
from bs4 import BeautifulSoup as bs
1111
from xml.etree.ElementTree import parse
12+
import re
1213
import fosslight_util.constant as constant
1314
import fosslight_dependency.constant as const
1415
from fosslight_dependency._package_manager import PackageManager
@@ -24,6 +25,7 @@ class Maven(PackageManager):
2425
input_file_name = os.path.join('target', 'generated-resources', 'licenses.xml')
2526
is_run_plugin = False
2627
output_custom_dir = ''
28+
dependency_tree = {}
2729

2830
def __init__(self, input_dir, output_dir, output_custom_dir):
2931
super().__init__(self.package_manager_name, self.dn_url, input_dir, output_dir)
@@ -127,20 +129,41 @@ def clean_run_maven_plugin_output(self):
127129
shutil.rmtree(top_path)
128130

129131
def run_maven_plugin(self):
132+
dependency_tree_fname = 'tmp_dependency_tree.txt'
133+
130134
logger.info('Run maven license scanning plugin with temporary pom.xml')
131135
if os.path.isfile('mvnw') or os.path.isfile('mvnw.cmd'):
132136
if self.platform == const.WINDOWS:
133-
cmd = "mvnw.cmd"
137+
cmd_mvn = "mvnw.cmd"
134138
else:
135-
cmd = "./mvnw"
139+
cmd_mvn = "./mvnw"
136140
else:
137-
cmd = "mvn"
138-
cmd += " license:aggregate-download-licenses"
141+
cmd_mvn = "mvn"
142+
cmd = cmd_mvn + " license:aggregate-download-licenses"
139143

140144
ret = subprocess.call(cmd, shell=True)
141145
if ret != 0:
142146
logger.error("Failed to run maven plugin: " + cmd)
143147

148+
cmd = cmd_mvn + " dependency:tree > " + dependency_tree_fname
149+
ret = subprocess.call(cmd, shell=True)
150+
if ret != 0:
151+
logger.error("Failed to run: " + cmd)
152+
else:
153+
self.parse_dependency_tree(dependency_tree_fname)
154+
os.remove(dependency_tree_fname)
155+
156+
def parse_dependency_tree(self, f_name):
157+
with open(f_name, 'r', encoding='utf8') as input_fp:
158+
for i, line in enumerate(input_fp.readlines()):
159+
try:
160+
re_result = re.findall(r'[\+|\\]\-\s([^\:\s]+\:[^\:\s]+)\:(?:[^\:\s]+)\:([^\:\s]+)\:([^\:\s]+)', line)
161+
if re_result:
162+
dependency_key = re_result[0][0] + ':' + re_result[0][1]
163+
self.dependency_tree[dependency_key] = re_result[0][2]
164+
except Exception as e:
165+
logger.error("Failed to parse dependency tree: " + str(e))
166+
144167
def parse_oss_information(self, f_name):
145168
with open(f_name, 'r', encoding='utf8') as input_fp:
146169
tree = parse(input_fp)
@@ -171,7 +194,15 @@ def parse_oss_information(self, f_name):
171194
# Case that doesn't include License tag value.
172195
license_name = ''
173196

197+
try:
198+
comment = ''
199+
dependency_tree_key = oss_name + ':' + version
200+
if dependency_tree_key in self.dependency_tree.keys():
201+
comment = self.dependency_tree[dependency_tree_key]
202+
except Exception as e:
203+
logger.error("Fail to find oss scope in dependency tree: " + str(e))
204+
174205
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
175-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', ''])
206+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
176207

177208
return sheet_list

0 commit comments

Comments
 (0)