Skip to content

Commit 472dc3d

Browse files
authored
Merge pull request #94 from fosslight/develop
Separate multi license for Npm
2 parents bca197e + fdfd99a commit 472dc3d

File tree

2 files changed

+34
-16
lines changed

2 files changed

+34
-16
lines changed

src/fosslight_dependency/package_manager/Npm.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import subprocess
99
import json
1010
import shutil
11+
import re
1112
import fosslight_util.constant as constant
1213
import fosslight_dependency.constant as const
1314
from fosslight_dependency._package_manager import PackageManager
@@ -115,14 +116,14 @@ def parse_oss_information(self, f_name):
115116
if self.package_name:
116117
if self.package_name == oss_init_name:
117118
comment = 'root package'
118-
multi_license = check_multi_license(license_name)
119+
119120
manifest_file_path = os.path.join(package_path, const.SUPPORT_PACKAE.get(self.package_manager_name))
120-
if multi_license:
121-
for l_idx in range(0, len(license_name)):
122-
license_name = license_name[l_idx].replace(",", "")
123-
license_name = check_unknown_license(license_name, manifest_file_path)
124-
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
125-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
121+
multi_license, license_comment = check_multi_license(license_name, manifest_file_path)
122+
123+
if license_comment != '':
124+
comment = f'{comment}, {license_comment}'
125+
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
126+
oss_name, oss_version, multi_license, dn_loc, homepage, '', '', comment])
126127
else:
127128
license_name = license_name.replace(",", "")
128129
license_name = check_unknown_license(license_name, manifest_file_path)
@@ -155,13 +156,28 @@ def parse_direct_dependencies(self):
155156
logger.warning(f'Cannot print if it is direct dependency: {e}')
156157

157158

158-
def check_multi_license(license_name):
159-
if isinstance(license_name, list):
160-
multi_license = True
161-
else:
162-
multi_license = False
163-
164-
return multi_license
159+
def check_multi_license(license_name, manifest_file_path):
160+
multi_license_list = []
161+
multi_license = ''
162+
license_comment = ''
163+
try:
164+
if isinstance(license_name, list):
165+
for i in range(0, len(license_name)):
166+
l_i = license_name[i].replace(",", "")
167+
multi_license_list.append(check_unknown_license(l_i, manifest_file_path))
168+
multi_license = ','.join(multi_license_list)
169+
else:
170+
if license_name.startswith('(') and license_name.endswith(')'):
171+
license_name = license_name[1:]
172+
license_name = license_name[:-1]
173+
license_comment = license_name
174+
re_result = re.findall(r'(\S+)\s(AND|OR)\s(\S+)', license_comment)
175+
multi_license = f'{re_result[0][0]},{re_result[0][2]}'
176+
except Exception as e:
177+
multi_license = license_name
178+
logger.warning(f'Fail to parse multi license in npm: {e}')
179+
180+
return multi_license, license_comment
165181

166182

167183
def check_unknown_license(license_name, manifest_file_path):

tests/test_npm1/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
"rootpath": "^0.1.2",
3131
"scmp": "^2.1.0",
3232
"url-parse": "^1.5.0",
33-
"xmlbuilder": "^13.0.2"
33+
"xmlbuilder": "^13.0.2",
34+
"node-forge": "1.3.1",
35+
"sha.js": "2.4.11"
3436
},
3537
"devDependencies": {
3638
"@types/node": "9.6.57",
@@ -70,4 +72,4 @@
7072
"node": ">=6.0"
7173
},
7274
"license": "MIT"
73-
}
75+
}

0 commit comments

Comments
 (0)