fosslight-dependency 3.13.9__py3-none-any.whl → 3.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fosslight_dependency/_package_manager.py +34 -0
- fosslight_dependency/constant.py +1 -1
- fosslight_dependency/package_manager/Android.py +5 -2
- fosslight_dependency/package_manager/Carthage.py +6 -6
- fosslight_dependency/package_manager/Cocoapods.py +10 -5
- fosslight_dependency/package_manager/Go.py +5 -3
- fosslight_dependency/package_manager/Gradle.py +6 -3
- fosslight_dependency/package_manager/Helm.py +6 -3
- fosslight_dependency/package_manager/Maven.py +5 -3
- fosslight_dependency/package_manager/Npm.py +7 -5
- fosslight_dependency/package_manager/Nuget.py +5 -3
- fosslight_dependency/package_manager/Pub.py +5 -3
- fosslight_dependency/package_manager/Pypi.py +51 -26
- fosslight_dependency/package_manager/Swift.py +6 -4
- fosslight_dependency/run_dependency_scanner.py +27 -5
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/METADATA +3 -2
- fosslight_dependency-3.14.1.dist-info/RECORD +33 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/WHEEL +1 -1
- fosslight_dependency-3.13.9.dist-info/RECORD +0 -33
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/Apache-2.0.txt +0 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/LICENSE +0 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/LicenseRef-3rd_party_licenses.txt +0 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/MIT.txt +0 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/entry_points.txt +0 -0
- {fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/top_level.txt +0 -0
@@ -13,6 +13,7 @@ import subprocess
|
|
13
13
|
import shutil
|
14
14
|
import fosslight_util.constant as constant
|
15
15
|
import fosslight_dependency.constant as const
|
16
|
+
from packageurl.contrib import url2purl
|
16
17
|
|
17
18
|
try:
|
18
19
|
from github import Github
|
@@ -48,6 +49,7 @@ class PackageManager:
|
|
48
49
|
self.manifest_file_name = []
|
49
50
|
self.relation_tree = {}
|
50
51
|
self.package_name = ''
|
52
|
+
self.purl_dict = {}
|
51
53
|
|
52
54
|
self.platform = platform.system()
|
53
55
|
self.license_scanner_bin = check_license_scanner(self.platform)
|
@@ -188,6 +190,38 @@ class PackageManager:
|
|
188
190
|
logger.warning(f'Fail to parse gradle dependency tree:{e}')
|
189
191
|
|
190
192
|
|
193
|
+
def get_url_to_purl(url, pkg_manager, oss_name='', oss_version=''):
|
194
|
+
purl_prefix = f'pkg:{pkg_manager}'
|
195
|
+
purl = str(url2purl.get_purl(url))
|
196
|
+
if not re.match(purl_prefix, purl):
|
197
|
+
match = re.match(constant.PKG_PATTERN.get(pkg_manager, 'not_support'), url)
|
198
|
+
try:
|
199
|
+
if match and (match != ''):
|
200
|
+
if pkg_manager == 'maven':
|
201
|
+
purl = f'{purl_prefix}/{match.group(1)}/{match.group(2)}@{match.group(3)}'
|
202
|
+
elif pkg_manager == 'pub':
|
203
|
+
purl = f'{purl_prefix}/{match.group(1)}@{match.group(2)}'
|
204
|
+
elif pkg_manager == 'cocoapods':
|
205
|
+
match = re.match(r'([^\/]+)\/?([^\/]*)', oss_name) # ex, GoogleUtilities/NSData+zlib
|
206
|
+
purl = f'{purl_prefix}/{match.group(1)}@{oss_version}'
|
207
|
+
if match.group(2):
|
208
|
+
purl = f'{purl}#{match.group(2)}'
|
209
|
+
elif pkg_manager == 'go':
|
210
|
+
purl = f'{purl_prefix}lang/{match.group(1)}@{match.group(2)}'
|
211
|
+
else:
|
212
|
+
if pkg_manager == 'swift':
|
213
|
+
if oss_version:
|
214
|
+
purl = f'{purl_prefix}/{oss_name}@{oss_version}'
|
215
|
+
else:
|
216
|
+
purl = f'{purl_prefix}/{oss_name}'
|
217
|
+
elif pkg_manager == 'carthage':
|
218
|
+
if oss_version:
|
219
|
+
purl = f'{purl}@{oss_version}'
|
220
|
+
except Exception:
|
221
|
+
logger.debug('Fail to get purl. So use the link purl({purl}).')
|
222
|
+
return purl
|
223
|
+
|
224
|
+
|
191
225
|
def version_refine(oss_version):
|
192
226
|
version_cmp = oss_version.upper()
|
193
227
|
|
fosslight_dependency/constant.py
CHANGED
@@ -25,7 +25,7 @@ HELM = 'helm'
|
|
25
25
|
|
26
26
|
# Supported package name and manifest file
|
27
27
|
SUPPORT_PACKAE = {
|
28
|
-
PYPI: ['requirements.txt', 'setup.py'],
|
28
|
+
PYPI: ['requirements.txt', 'setup.py', 'pyproject.toml'],
|
29
29
|
NPM: 'package.json',
|
30
30
|
MAVEN: 'pom.xml',
|
31
31
|
GRADLE: 'build.gradle',
|
@@ -7,7 +7,7 @@ import os
|
|
7
7
|
import logging
|
8
8
|
import fosslight_util.constant as constant
|
9
9
|
import fosslight_dependency.constant as const
|
10
|
-
from fosslight_dependency._package_manager import PackageManager
|
10
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
11
11
|
|
12
12
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
13
13
|
|
@@ -49,6 +49,8 @@ class Android(PackageManager):
|
|
49
49
|
idx, manifest_file, oss_name, oss_version, license_name, dn_loc, homepage = split_str
|
50
50
|
else:
|
51
51
|
continue
|
52
|
+
purl = get_url_to_purl(dn_loc, 'maven')
|
53
|
+
self.purl_dict[f'{oss_name}({oss_version})'] = purl
|
52
54
|
|
53
55
|
comment_list = []
|
54
56
|
deps_list = []
|
@@ -69,6 +71,7 @@ class Android(PackageManager):
|
|
69
71
|
comment = ','.join(comment_list)
|
70
72
|
deps = ','.join(deps_list)
|
71
73
|
|
72
|
-
sheet_list.append([
|
74
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
75
|
+
'', '', comment, deps])
|
73
76
|
|
74
77
|
return sheet_list
|
@@ -9,9 +9,8 @@ import os
|
|
9
9
|
import fosslight_util.constant as constant
|
10
10
|
import fosslight_dependency.constant as const
|
11
11
|
from fosslight_dependency._package_manager import PackageManager
|
12
|
-
from fosslight_dependency._package_manager import connect_github
|
13
|
-
from fosslight_dependency._package_manager import
|
14
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
12
|
+
from fosslight_dependency._package_manager import connect_github, get_github_license, check_and_run_license_scanner
|
13
|
+
from fosslight_dependency._package_manager import get_url_to_purl
|
15
14
|
|
16
15
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
16
|
|
@@ -60,9 +59,10 @@ class Carthage(PackageManager):
|
|
60
59
|
else:
|
61
60
|
homepage = oss_path
|
62
61
|
dn_loc = homepage
|
63
|
-
|
64
62
|
oss_version = re_result[0][2]
|
65
63
|
|
64
|
+
purl = get_url_to_purl(homepage, self.package_manager_name, oss_origin_name, oss_version)
|
65
|
+
|
66
66
|
license_name = ''
|
67
67
|
find_license = False
|
68
68
|
if oss_origin_name in checkout_dir_list:
|
@@ -96,8 +96,8 @@ class Carthage(PackageManager):
|
|
96
96
|
else:
|
97
97
|
comment = 'transitive'
|
98
98
|
|
99
|
-
sheet_list.append([
|
100
|
-
|
99
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
100
|
+
'', '', comment, ''])
|
101
101
|
|
102
102
|
except Exception as e:
|
103
103
|
logger.warning(f"Failed to parse oss information: {e}")
|
@@ -10,7 +10,7 @@ import yaml
|
|
10
10
|
import re
|
11
11
|
import fosslight_util.constant as constant
|
12
12
|
import fosslight_dependency.constant as const
|
13
|
-
from fosslight_dependency._package_manager import PackageManager
|
13
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
14
14
|
|
15
15
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
16
16
|
|
@@ -86,7 +86,7 @@ class Cocoapods(PackageManager):
|
|
86
86
|
try:
|
87
87
|
comment_list = []
|
88
88
|
deps_list = []
|
89
|
-
if self.direct_dep:
|
89
|
+
if self.direct_dep and (len(self.direct_dep_list) > 0):
|
90
90
|
if pod_oss_name_origin in self.direct_dep_list:
|
91
91
|
comment_list.append('direct')
|
92
92
|
else:
|
@@ -98,10 +98,12 @@ class Cocoapods(PackageManager):
|
|
98
98
|
comment = ','.join(comment_list)
|
99
99
|
deps = ','.join(deps_list)
|
100
100
|
|
101
|
+
oss_name_report = f'{self.package_manager_name}:{pod_oss_name_origin}'
|
101
102
|
pod_oss_name = pod_oss_name_origin
|
102
103
|
if '/' in pod_oss_name_origin:
|
103
104
|
pod_oss_name = pod_oss_name_origin.split('/')[0]
|
104
105
|
if pod_oss_name in external_source_list:
|
106
|
+
oss_name_report = pod_oss_name_origin
|
105
107
|
podspec_filename = pod_oss_name + '.podspec.json'
|
106
108
|
spec_file_path = os.path.join("Pods", "Local Podspecs", podspec_filename)
|
107
109
|
else:
|
@@ -126,14 +128,17 @@ class Cocoapods(PackageManager):
|
|
126
128
|
spec_file_path = os.path.join(file_path_without_version, pod_oss_version, file_path[-1])
|
127
129
|
|
128
130
|
oss_name, oss_version, license_name, dn_loc, homepage = self.get_oss_in_podspec(spec_file_path)
|
131
|
+
purl = get_url_to_purl(homepage, self.package_manager_name, pod_oss_name_origin, oss_version)
|
132
|
+
self.purl_dict[f'{pod_oss_name_origin}({oss_version})'] = purl
|
133
|
+
if pod_oss_name in external_source_list:
|
134
|
+
homepage = dn_loc
|
129
135
|
if oss_name == '':
|
130
136
|
continue
|
131
137
|
if pod_oss_version != oss_version:
|
132
138
|
logger.warning(f'{pod_oss_name_origin} has different version({pod_oss_version})\
|
133
139
|
with spec version({oss_version})')
|
134
|
-
sheet_list.append([
|
135
|
-
|
136
|
-
pod_oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
|
140
|
+
sheet_list.append([purl, oss_name_report, pod_oss_version, license_name, dn_loc, homepage,
|
141
|
+
'', '', comment, deps])
|
137
142
|
except Exception as e:
|
138
143
|
logger.warning(f"Fail to get {pod_oss_name_origin}:{e}")
|
139
144
|
|
@@ -12,7 +12,7 @@ import urllib.request
|
|
12
12
|
import re
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
|
-
from fosslight_dependency._package_manager import PackageManager
|
15
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
16
16
|
|
17
17
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
18
18
|
|
@@ -107,6 +107,8 @@ class Go(PackageManager):
|
|
107
107
|
|
108
108
|
homepage_set = []
|
109
109
|
homepage = self.dn_url + package_path
|
110
|
+
purl = get_url_to_purl(f"{homepage}@{oss_version}", self.package_manager_name)
|
111
|
+
self.purl_dict[f'{package_path}({oss_version})'] = purl
|
110
112
|
|
111
113
|
if oss_origin_version:
|
112
114
|
tmp_homepage = f"{homepage}@{oss_origin_version}"
|
@@ -148,7 +150,7 @@ class Go(PackageManager):
|
|
148
150
|
|
149
151
|
comment = ','.join(comment_list)
|
150
152
|
deps = ','.join(deps_list)
|
151
|
-
sheet_list.append([
|
152
|
-
|
153
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
154
|
+
'', '', comment, deps])
|
153
155
|
|
154
156
|
return sheet_list
|
@@ -9,7 +9,7 @@ import json
|
|
9
9
|
import fosslight_util.constant as constant
|
10
10
|
import fosslight_dependency.constant as const
|
11
11
|
from fosslight_dependency._package_manager import PackageManager
|
12
|
-
from fosslight_dependency._package_manager import version_refine
|
12
|
+
from fosslight_dependency._package_manager import version_refine, get_url_to_purl
|
13
13
|
|
14
14
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
15
15
|
|
@@ -59,6 +59,7 @@ class Gradle(PackageManager):
|
|
59
59
|
oss_version = version_refine(oss_ini_version)
|
60
60
|
|
61
61
|
license_names = []
|
62
|
+
purl = ''
|
62
63
|
try:
|
63
64
|
for licenses in d['licenses']:
|
64
65
|
if licenses['name'] != '':
|
@@ -73,6 +74,8 @@ class Gradle(PackageManager):
|
|
73
74
|
else:
|
74
75
|
dn_loc = f"{self.dn_url}{group_id}/{artifact_id}/{oss_ini_version}"
|
75
76
|
homepage = f"{self.dn_url}{group_id}/{artifact_id}"
|
77
|
+
purl = get_url_to_purl(dn_loc, 'maven')
|
78
|
+
self.purl_dict[f'{oss_name}({oss_ini_version})'] = purl
|
76
79
|
|
77
80
|
comment_list = []
|
78
81
|
deps_list = []
|
@@ -90,8 +93,8 @@ class Gradle(PackageManager):
|
|
90
93
|
comment = ','.join(comment_list)
|
91
94
|
deps = ','.join(deps_list)
|
92
95
|
|
93
|
-
sheet_list.append([
|
94
|
-
|
96
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
97
|
+
'', '', comment, deps])
|
95
98
|
|
96
99
|
return sheet_list
|
97
100
|
|
@@ -10,7 +10,7 @@ import yaml
|
|
10
10
|
import shutil
|
11
11
|
import fosslight_util.constant as constant
|
12
12
|
import fosslight_dependency.constant as const
|
13
|
-
from fosslight_dependency._package_manager import PackageManager
|
13
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
14
14
|
from fosslight_util.download import extract_compressed_dir
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
@@ -73,6 +73,7 @@ class Helm(PackageManager):
|
|
73
73
|
for dep in dep_item_list:
|
74
74
|
try:
|
75
75
|
f_path = os.path.join(self.tmp_charts_dir, dep, f_name)
|
76
|
+
purl = ''
|
76
77
|
with open(f_path, 'r', encoding='utf8') as yaml_fp:
|
77
78
|
yaml_f = yaml.safe_load(yaml_fp)
|
78
79
|
oss_name = f'{self.package_manager_name}:{yaml_f["name"]}'
|
@@ -85,6 +86,8 @@ class Helm(PackageManager):
|
|
85
86
|
if yaml_f.get('sources', '') != '':
|
86
87
|
dn_loc = yaml_f.get('sources', '')[0]
|
87
88
|
|
89
|
+
purl = get_url_to_purl(dn_loc if dn_loc else homepage, self.package_manager_name)
|
90
|
+
|
88
91
|
license_name = ''
|
89
92
|
if yaml_f.get('annotations', '') != '':
|
90
93
|
license_name = yaml_f['annotations'].get('licenses', '')
|
@@ -96,7 +99,7 @@ class Helm(PackageManager):
|
|
96
99
|
logging.warning(f"Fail to parse chart info {dep}: {e}")
|
97
100
|
continue
|
98
101
|
|
99
|
-
sheet_list.append([
|
100
|
-
|
102
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
103
|
+
'', '', comment, ''])
|
101
104
|
|
102
105
|
return sheet_list
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import version_refine
|
16
|
+
from fosslight_dependency._package_manager import version_refine, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -225,6 +225,8 @@ class Maven(PackageManager):
|
|
225
225
|
oss_name = f"{groupid}:{artifactid}"
|
226
226
|
dn_loc = f"{self.dn_url}{groupid}/{artifactid}/{version}"
|
227
227
|
homepage = f"{self.dn_url}{groupid}/{artifactid}"
|
228
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
229
|
+
self.purl_dict[f'{oss_name}({oss_version})'] = purl
|
228
230
|
|
229
231
|
licenses = d.find("licenses")
|
230
232
|
if len(licenses):
|
@@ -253,7 +255,7 @@ class Maven(PackageManager):
|
|
253
255
|
comment = ','.join(comment_list)
|
254
256
|
deps = ','.join(deps_list)
|
255
257
|
|
256
|
-
sheet_list.append([
|
257
|
-
|
258
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
259
|
+
'', '', comment, deps])
|
258
260
|
|
259
261
|
return sheet_list
|
@@ -11,7 +11,7 @@ import shutil
|
|
11
11
|
import re
|
12
12
|
import fosslight_util.constant as constant
|
13
13
|
import fosslight_dependency.constant as const
|
14
|
-
from fosslight_dependency._package_manager import PackageManager
|
14
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
17
|
node_modules = 'node_modules'
|
@@ -176,6 +176,8 @@ class Npm(PackageManager):
|
|
176
176
|
|
177
177
|
homepage = self.dn_url + oss_init_name
|
178
178
|
dn_loc = f"{self.dn_url}{oss_init_name}/v/{oss_version}"
|
179
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
180
|
+
self.purl_dict[f'{oss_init_name}({oss_version})'] = purl
|
179
181
|
if d[_repository]:
|
180
182
|
dn_loc = d[_repository]
|
181
183
|
elif private_pkg:
|
@@ -205,13 +207,13 @@ class Npm(PackageManager):
|
|
205
207
|
deps = ','.join(deps_list)
|
206
208
|
if multi_flag:
|
207
209
|
comment = f'{comment}, {license_comment}'
|
208
|
-
sheet_list.append([
|
209
|
-
|
210
|
+
sheet_list.append([purl, oss_name, oss_version, multi_license, dn_loc, homepage,
|
211
|
+
'', '', comment, deps])
|
210
212
|
else:
|
211
213
|
license_name = license_name.replace(",", "")
|
212
214
|
license_name = check_unknown_license(license_name, manifest_file_path)
|
213
|
-
sheet_list.append([
|
214
|
-
|
215
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
216
|
+
'', '', comment, deps])
|
215
217
|
|
216
218
|
return sheet_list
|
217
219
|
|
@@ -12,7 +12,7 @@ import requests
|
|
12
12
|
import fosslight_util.constant as constant
|
13
13
|
import fosslight_dependency.constant as const
|
14
14
|
from fosslight_dependency._package_manager import PackageManager
|
15
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
15
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
16
16
|
|
17
17
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
18
18
|
|
@@ -95,8 +95,11 @@ class Nuget(PackageManager):
|
|
95
95
|
else:
|
96
96
|
if dn_loc.endswith('.git'):
|
97
97
|
dn_loc = dn_loc[:-4]
|
98
|
+
purl = get_url_to_purl(f'{homepage}/{oss_version}', self.package_manager_name)
|
98
99
|
else:
|
99
100
|
comment_list.append('Fail to response for nuget api')
|
101
|
+
purl = f'pkg:nuget/{oss_origin_name}@{oss_version}'
|
102
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
100
103
|
|
101
104
|
deps_list = []
|
102
105
|
if self.direct_dep and self.packageReference:
|
@@ -112,8 +115,7 @@ class Nuget(PackageManager):
|
|
112
115
|
|
113
116
|
comment = ','.join(comment_list)
|
114
117
|
deps = ','.join(deps_list)
|
115
|
-
sheet_list.append([','
|
116
|
-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
|
118
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
|
117
119
|
|
118
120
|
except Exception as e:
|
119
121
|
logger.warning(f"Failed to parse oss information: {e}")
|
@@ -13,7 +13,7 @@ import subprocess
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
16
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -124,6 +124,8 @@ class Pub(PackageManager):
|
|
124
124
|
if homepage is None:
|
125
125
|
homepage = ''
|
126
126
|
dn_loc = f"{self.dn_url}{oss_origin_name}/versions/{oss_version}"
|
127
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
128
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
127
129
|
license_txt = json_data['license']
|
128
130
|
|
129
131
|
tmp_license_txt = open(tmp_license_txt_file_name, 'w', encoding='utf-8')
|
@@ -158,8 +160,8 @@ class Pub(PackageManager):
|
|
158
160
|
deps_list.extend(rel_items)
|
159
161
|
comment = ','.join(comment_list)
|
160
162
|
deps = ','.join(deps_list)
|
161
|
-
sheet_list.append([
|
162
|
-
|
163
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
164
|
+
'', '', comment, deps])
|
163
165
|
except Exception as e:
|
164
166
|
logger.error(f"Fail to parse pub oss information: {e}")
|
165
167
|
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
16
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -75,10 +75,10 @@ class Pypi(PackageManager):
|
|
75
75
|
install_cmd_list = []
|
76
76
|
for manifest_file in manifest_files:
|
77
77
|
if os.path.exists(manifest_file):
|
78
|
-
if manifest_file == '
|
79
|
-
install_cmd_list.append("pip install .")
|
80
|
-
elif manifest_file == 'requirements.txt':
|
78
|
+
if manifest_file == 'requirements.txt':
|
81
79
|
install_cmd_list.append("pip install -r requirements.txt")
|
80
|
+
else:
|
81
|
+
install_cmd_list.append("pip install .")
|
82
82
|
else:
|
83
83
|
manifest_files.remove(manifest_file)
|
84
84
|
self.set_manifest_file(manifest_files)
|
@@ -90,7 +90,7 @@ class Pypi(PackageManager):
|
|
90
90
|
activate_cmd = os.path.join(self.venv_tmp_dir, "Scripts", "activate.bat")
|
91
91
|
cmd_separator = "&"
|
92
92
|
else:
|
93
|
-
create_venv_cmd = f"
|
93
|
+
create_venv_cmd = f"python3 -m venv {self.venv_tmp_dir}"
|
94
94
|
activate_cmd = ". " + os.path.join(venv_path, "bin", "activate")
|
95
95
|
cmd_separator = ";"
|
96
96
|
|
@@ -139,6 +139,7 @@ class Pypi(PackageManager):
|
|
139
139
|
pip_licenses_default_options = ' --from=mixed --with-url --format=json --with-license-file'
|
140
140
|
pip_licenses_system_option = ' --with-system -p '
|
141
141
|
tmp_pip_list = "tmp_list.txt"
|
142
|
+
python_cmd = "python -m"
|
142
143
|
|
143
144
|
if self.pip_activate_cmd.startswith("source "):
|
144
145
|
tmp_activate = self.pip_activate_cmd[7:]
|
@@ -156,7 +157,7 @@ class Pypi(PackageManager):
|
|
156
157
|
command_separator = ";"
|
157
158
|
|
158
159
|
activate_command = pip_activate_cmd
|
159
|
-
pip_list_command = f"pip freeze > {tmp_pip_list}"
|
160
|
+
pip_list_command = f"{python_cmd} pip freeze > {tmp_pip_list}"
|
160
161
|
deactivate_command = self.pip_deactivate_cmd
|
161
162
|
|
162
163
|
command_list = [activate_command, pip_list_command, deactivate_command]
|
@@ -215,29 +216,29 @@ class Pypi(PackageManager):
|
|
215
216
|
command_list = []
|
216
217
|
command_list.append(activate_command)
|
217
218
|
if not exists_pip_licenses:
|
218
|
-
install_pip_command = f"pip install {pip_licenses}"
|
219
|
+
install_pip_command = f"{python_cmd} pip install {pip_licenses}"
|
219
220
|
command_list.append(install_pip_command)
|
220
221
|
|
221
222
|
pip_licenses_command = f"{pip_licenses}{pip_licenses_default_options} > {self.tmp_file_name}"
|
222
223
|
command_list.append(pip_licenses_command)
|
223
224
|
|
224
225
|
if len(pip_license_pkg_list) != 0:
|
225
|
-
pip_licenses_info_command = pip_licenses
|
226
|
+
pip_licenses_info_command = f"{pip_licenses}{pip_licenses_default_options}{pip_licenses_system_option}"
|
226
227
|
pip_licenses_info_command += " ".join(pip_license_pkg_list)
|
227
228
|
|
228
229
|
pip_licenses_info_command += f" > {self.tmp_pip_license_info_file_name}"
|
229
230
|
command_list.append(pip_licenses_info_command)
|
230
231
|
|
231
232
|
if len(uninstall_pkg_list) > 0:
|
232
|
-
uninstall_pip_command = "pip uninstall -y "
|
233
|
+
uninstall_pip_command = f"{python_cmd} pip uninstall -y "
|
233
234
|
uninstall_pip_command += ' '.join(uninstall_pkg_list)
|
234
235
|
command_list.append(uninstall_pip_command)
|
235
236
|
|
236
237
|
if not exists_pipdeptree:
|
237
|
-
install_deptree_command = f"pip install {pipdeptree}"
|
238
|
+
install_deptree_command = f"{python_cmd} pip install {pipdeptree}"
|
238
239
|
command_list.append(install_deptree_command)
|
239
|
-
uninstall_deptree_command = f"pip uninstall -y {pipdeptree}"
|
240
|
-
pipdeptree_command = f"{pipdeptree} --
|
240
|
+
uninstall_deptree_command = f"{python_cmd} pip uninstall -y {pipdeptree}"
|
241
|
+
pipdeptree_command = f"{pipdeptree} --json-tree -e 'pipdeptree,pip,wheel,setuptools' > {self.tmp_deptree_file}"
|
241
242
|
command_list.append(pipdeptree_command)
|
242
243
|
command_list.append(uninstall_deptree_command)
|
243
244
|
command_list.append(deactivate_command)
|
@@ -247,8 +248,16 @@ class Pypi(PackageManager):
|
|
247
248
|
cmd_ret = subprocess.call(command, shell=True)
|
248
249
|
if cmd_ret == 0:
|
249
250
|
self.append_input_package_list_file(self.tmp_file_name)
|
251
|
+
with open(self.tmp_file_name, 'r', encoding='utf-8') as json_f:
|
252
|
+
json_data = json.load(json_f)
|
253
|
+
for d in json_data:
|
254
|
+
self.total_dep_list.append(re.sub(r"[-_.]+", "-", d['Name']).lower())
|
250
255
|
if len(pip_license_pkg_list) != 0:
|
251
256
|
self.append_input_package_list_file(self.tmp_pip_license_info_file_name)
|
257
|
+
with open(self.tmp_pip_license_info_file_name, 'r', encoding='utf-8') as json_f:
|
258
|
+
json_data = json.load(json_f)
|
259
|
+
for d in json_data:
|
260
|
+
self.total_dep_list.append(re.sub(r"[-_.]+", "-", d['Name']).lower())
|
252
261
|
else:
|
253
262
|
logger.error(f"Failed to run command: {command}")
|
254
263
|
ret = False
|
@@ -274,7 +283,8 @@ class Pypi(PackageManager):
|
|
274
283
|
homepage = check_UNKNOWN(d['URL'])
|
275
284
|
oss_version = d['Version']
|
276
285
|
dn_loc = f"{self.dn_url}{oss_init_name}/{oss_version}"
|
277
|
-
|
286
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
287
|
+
self.purl_dict[f'{oss_init_name}({oss_version})'] = purl
|
278
288
|
if license_name is not None:
|
279
289
|
license_name = license_name.replace(';', ',')
|
280
290
|
else:
|
@@ -287,7 +297,9 @@ class Pypi(PackageManager):
|
|
287
297
|
|
288
298
|
comment_list = []
|
289
299
|
deps_list = []
|
290
|
-
if self.
|
300
|
+
if oss_init_name == self.package_name:
|
301
|
+
comment_list.append('root package')
|
302
|
+
elif self.direct_dep and len(self.direct_dep_list) > 0:
|
291
303
|
if f'{oss_init_name}({oss_version})' in self.direct_dep_list:
|
292
304
|
comment_list.append('direct')
|
293
305
|
else:
|
@@ -298,8 +310,7 @@ class Pypi(PackageManager):
|
|
298
310
|
deps_list.extend(rel_items)
|
299
311
|
comment = ','.join(comment_list)
|
300
312
|
deps = ','.join(deps_list)
|
301
|
-
sheet_list.append([
|
302
|
-
oss_name, oss_version,
|
313
|
+
sheet_list.append([purl, oss_name, oss_version,
|
303
314
|
license_name, dn_loc, homepage, '', '', comment, deps])
|
304
315
|
|
305
316
|
except Exception as ex:
|
@@ -312,12 +323,12 @@ class Pypi(PackageManager):
|
|
312
323
|
deps = 'dependencies'
|
313
324
|
installed_ver = 'installed_version'
|
314
325
|
|
315
|
-
pkg_name = package[package_name]
|
326
|
+
pkg_name = re.sub(r"[-_.]+", "-", package[package_name]).lower()
|
316
327
|
pkg_ver = package[installed_ver]
|
317
328
|
dependency_list = package[deps]
|
318
329
|
dependencies[f"{pkg_name}({pkg_ver})"] = []
|
319
330
|
for dependency in dependency_list:
|
320
|
-
dep_name = dependency[package_name]
|
331
|
+
dep_name = re.sub(r"[-_.]+", "-", dependency[package_name]).lower()
|
321
332
|
dep_version = dependency[installed_ver]
|
322
333
|
dependencies[f"{pkg_name}({pkg_ver})"].append(f"{dep_name}({dep_version})")
|
323
334
|
if dependency[deps] != []:
|
@@ -329,14 +340,28 @@ class Pypi(PackageManager):
|
|
329
340
|
if not os.path.exists(self.tmp_deptree_file):
|
330
341
|
self.direct_dep = False
|
331
342
|
return
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
343
|
+
try:
|
344
|
+
with open(self.tmp_deptree_file, 'r', encoding='utf8') as f:
|
345
|
+
json_f = json.load(f)
|
346
|
+
root_package = json_f
|
347
|
+
if ('pyproject.toml' in self.manifest_file_name) or ('setup.py' in self.manifest_file_name):
|
348
|
+
direct_without_system_package = 0
|
349
|
+
for package in root_package:
|
350
|
+
package_name = re.sub(r"[-_.]+", "-", package['package_name']).lower()
|
351
|
+
if package_name in self.total_dep_list:
|
352
|
+
direct_without_system_package += 1
|
353
|
+
if direct_without_system_package == 1:
|
354
|
+
self.package_name = re.sub(r"[-_.]+", "-", json_f[0]['package_name']).lower()
|
355
|
+
root_package = json_f[0]['dependencies']
|
356
|
+
|
357
|
+
for package in root_package:
|
358
|
+
package_name = re.sub(r"[-_.]+", "-", package['package_name']).lower()
|
359
|
+
self.direct_dep_list.append(f"{package_name}({package['installed_version']})")
|
360
|
+
if package['dependencies'] == []:
|
361
|
+
continue
|
362
|
+
self.relation_tree = self.get_dependencies(self.relation_tree, package)
|
363
|
+
except Exception as e:
|
364
|
+
logger.warning(f'Fail to parse direct dependency: {e}')
|
340
365
|
|
341
366
|
|
342
367
|
def check_UNKNOWN(text):
|
@@ -10,8 +10,8 @@ import subprocess
|
|
10
10
|
import fosslight_util.constant as constant
|
11
11
|
import fosslight_dependency.constant as const
|
12
12
|
from fosslight_dependency._package_manager import PackageManager
|
13
|
-
from fosslight_dependency._package_manager import connect_github
|
14
|
-
from fosslight_dependency._package_manager import
|
13
|
+
from fosslight_dependency._package_manager import connect_github, get_github_license
|
14
|
+
from fosslight_dependency._package_manager import get_url_to_purl
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
17
|
|
@@ -134,6 +134,8 @@ class Swift(PackageManager):
|
|
134
134
|
license_name = ''
|
135
135
|
|
136
136
|
github_repo = "/".join(homepage.split('/')[-2:])
|
137
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name, github_repo, oss_version)
|
138
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
137
139
|
license_name = get_github_license(g, github_repo, self.platform, self.license_scanner_bin)
|
138
140
|
|
139
141
|
comment_list = []
|
@@ -150,7 +152,7 @@ class Swift(PackageManager):
|
|
150
152
|
deps_list.extend(rel_items)
|
151
153
|
comment = ','.join(comment_list)
|
152
154
|
deps = ','.join(deps_list)
|
153
|
-
sheet_list.append([
|
154
|
-
|
155
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
156
|
+
'', '', comment, deps])
|
155
157
|
|
156
158
|
return sheet_list
|
@@ -20,16 +20,17 @@ from fosslight_dependency._analyze_dependency import analyze_dependency
|
|
20
20
|
from fosslight_util.output_format import check_output_format, write_output_file
|
21
21
|
if platform.system() != 'Windows':
|
22
22
|
from fosslight_util.write_spdx import write_spdx
|
23
|
+
from fosslight_util.cover import CoverItem
|
23
24
|
|
24
25
|
# Package Name
|
25
26
|
_PKG_NAME = "fosslight_dependency"
|
26
27
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
27
28
|
warnings.filterwarnings("ignore", category=FutureWarning)
|
28
29
|
_sheet_name = "DEP_FL_Dependency"
|
29
|
-
EXTENDED_HEADER = {_sheet_name: ['ID', '
|
30
|
+
EXTENDED_HEADER = {_sheet_name: ['ID', 'purl', 'OSS Name',
|
30
31
|
'OSS Version', 'License', 'Download Location',
|
31
32
|
'Homepage', 'Copyright Text', 'Exclude',
|
32
|
-
'Comment', '
|
33
|
+
'Comment', 'Depends On']}
|
33
34
|
CUSTOMIZED_FORMAT = {'excel': '.xlsx', 'csv': '.csv', 'opossum': '.json', 'yaml': '.yaml',
|
34
35
|
'spdx-yaml': '.yaml', 'spdx-json': '.json', 'spdx-xml': '.xml',
|
35
36
|
'spdx-tag': '.tag'}
|
@@ -158,21 +159,40 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
|
|
158
159
|
finally:
|
159
160
|
if not ret:
|
160
161
|
logger.warning("Dependency scanning terminated because the package manager was not found.")
|
161
|
-
|
162
|
+
ret = False
|
162
163
|
else:
|
163
164
|
found_package_manager[package_manager] = ''
|
164
165
|
|
165
166
|
pass_key = 'PASS'
|
167
|
+
success_pm = []
|
168
|
+
fail_pm = []
|
166
169
|
for pm, manifest_file_name in found_package_manager.items():
|
167
170
|
if manifest_file_name == pass_key:
|
168
171
|
continue
|
169
172
|
ret, package_sheet_list = analyze_dependency(pm, input_dir, output_path, pip_activate_cmd, pip_deactivate_cmd,
|
170
173
|
output_custom_dir, app_name, github_token, manifest_file_name, direct)
|
171
174
|
if ret:
|
175
|
+
success_pm.append(f"{pm} ({', '.join(manifest_file_name)})")
|
172
176
|
sheet_list[_sheet_name].extend(package_sheet_list)
|
173
177
|
if pm == const.GRADLE:
|
174
178
|
if const.ANDROID in found_package_manager.keys():
|
175
179
|
found_package_manager[const.ANDROID] = pass_key
|
180
|
+
else:
|
181
|
+
fail_pm.append(f"{pm} ({', '.join(manifest_file_name)})")
|
182
|
+
cover = CoverItem(tool_name=_PKG_NAME,
|
183
|
+
start_time=_start_time,
|
184
|
+
input_path=input_dir)
|
185
|
+
cover_comment_arr = []
|
186
|
+
if len(found_package_manager.keys()) > 0:
|
187
|
+
if len(success_pm) > 0:
|
188
|
+
cover_comment_arr.append(f"Analyzed Package manager: {', '.join(success_pm)}")
|
189
|
+
if len(fail_pm) > 0:
|
190
|
+
info_msg = 'Check https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html#-prerequisite.'
|
191
|
+
cover_comment_arr.append(f"Analysis failed Package manager: {', '.join(fail_pm)} ({info_msg})")
|
192
|
+
else:
|
193
|
+
cover_comment_arr.append("No Package manager detected.")
|
194
|
+
|
195
|
+
cover.comment = ' / '.join(cover_comment_arr)
|
176
196
|
|
177
197
|
output_file_without_ext = os.path.join(output_path, output_file)
|
178
198
|
if format.startswith('spdx'):
|
@@ -184,12 +204,14 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
|
|
184
204
|
logger.error('Windows not support spdx format.')
|
185
205
|
else:
|
186
206
|
success_write, err_msg, result_file = write_output_file(output_file_without_ext, output_extension,
|
187
|
-
sheet_list, EXTENDED_HEADER)
|
207
|
+
sheet_list, EXTENDED_HEADER, '', cover)
|
188
208
|
if success_write:
|
189
209
|
if result_file:
|
190
|
-
logger.info(f"
|
210
|
+
logger.info(f"Output file: {result_file}")
|
191
211
|
else:
|
192
212
|
logger.warning(f"{err_msg}")
|
213
|
+
for i in cover_comment_arr:
|
214
|
+
logger.info(i.strip())
|
193
215
|
else:
|
194
216
|
ret = False
|
195
217
|
logger.error(f"Fail to generate result file. msg:({err_msg})")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fosslight-dependency
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.14.1
|
4
4
|
Summary: FOSSLight Dependency Scanner
|
5
5
|
Home-page: https://github.com/fosslight/fosslight_dependency_scanner
|
6
6
|
Author: LG Electronics
|
@@ -20,10 +20,11 @@ Requires-Dist: lxml
|
|
20
20
|
Requires-Dist: virtualenv
|
21
21
|
Requires-Dist: pyyaml
|
22
22
|
Requires-Dist: lastversion
|
23
|
-
Requires-Dist: fosslight-util >=1.4.
|
23
|
+
Requires-Dist: fosslight-util >=1.4.40
|
24
24
|
Requires-Dist: PyGithub
|
25
25
|
Requires-Dist: requirements-parser
|
26
26
|
Requires-Dist: defusedxml
|
27
|
+
Requires-Dist: packageurl-python
|
27
28
|
|
28
29
|
<!--
|
29
30
|
Copyright (c) 2021 LG Electronics
|
@@ -0,0 +1,33 @@
|
|
1
|
+
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
fosslight_dependency/_analyze_dependency.py,sha256=5fJ-eAkGUVsAo0Eks9l40zyWNBm7HxGQMWD2bAbOWa0,3710
|
3
|
+
fosslight_dependency/_help.py,sha256=gBZfnYF8e4-WQnKa0z6zwXSRUKoIWtQyHbsvjvEFysE,2708
|
4
|
+
fosslight_dependency/_package_manager.py,sha256=6U6V413HSZAChX64v3CfXBd6jyIkuaIW60pBfbCLSfQ,13700
|
5
|
+
fosslight_dependency/constant.py,sha256=vj3YI1e1pesUoSW0wp0t9RFHCNjoKJZ6Fv4P8EAl6hU,953
|
6
|
+
fosslight_dependency/run_dependency_scanner.py,sha256=S8PQMSdSvg6QaAtY1uuQ6a0apuwdeU3jU6RdBiz2PvU,12236
|
7
|
+
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
|
+
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
|
+
fosslight_dependency/package_manager/Android.py,sha256=lPL-B-qIr4Bg1Z-bT6hSwzYF0IqW3J32At8AJNg8P_w,3015
|
10
|
+
fosslight_dependency/package_manager/Carthage.py,sha256=OZL0ssKvN6pze0VohZ-kMeM-g-V7f5VqumpEh3o3t-U,6106
|
11
|
+
fosslight_dependency/package_manager/Cocoapods.py,sha256=X6UYX0-Tdfy_hkM0l5M54WHbhZNLLpFDzrGxeBjTmcY,8450
|
12
|
+
fosslight_dependency/package_manager/Go.py,sha256=Ur7kH_alqV2o2t6Q5oP2UqmqfzdZ6l9yPuglTEOYrHU,6003
|
13
|
+
fosslight_dependency/package_manager/Gradle.py,sha256=_gZjdmNDXdUEumVwwesbaCeJI5T90xzkwZy1ACFHeR8,4182
|
14
|
+
fosslight_dependency/package_manager/Helm.py,sha256=FjzQilY3GJyX8thwMGY_Rr12kw-dbehxVk6jIJNb2-M,4024
|
15
|
+
fosslight_dependency/package_manager/Maven.py,sha256=VlIc785CrFN3RBXHy80JSx2J5AlrbXhg5cquZA-qoLw,10261
|
16
|
+
fosslight_dependency/package_manager/Npm.py,sha256=7gj-JrQKWRQUdWM-ly3HcIy1ioKny8jaeNohdBk7rfE,10557
|
17
|
+
fosslight_dependency/package_manager/Nuget.py,sha256=1YGkGktShw6xj7NGvgL763jWsnN58JEX9szTggjU1EQ,9061
|
18
|
+
fosslight_dependency/package_manager/Pub.py,sha256=u2Wsm8raxc8fYEchyUpSpiKi-1x8seE4f0zJHD8BrMI,8964
|
19
|
+
fosslight_dependency/package_manager/Pypi.py,sha256=QakFlbGrb3oOXwRj498x5k2GFS1SgNeMpgMwUpBcwWU,15698
|
20
|
+
fosslight_dependency/package_manager/Swift.py,sha256=9J-LDCn0_zDBuScUeCgZIq0BQcx4n_1fhshciF9byNE,6590
|
21
|
+
fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
23
|
+
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
24
|
+
fosslight_dependency/third_party/nomos/nomossa,sha256=oFF9I-fhug6AVNyFnWeVXwDRin6NWSvk1g7mHBotB3Q,866408
|
25
|
+
fosslight_dependency-3.14.1.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
+
fosslight_dependency-3.14.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
fosslight_dependency-3.14.1.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
28
|
+
fosslight_dependency-3.14.1.dist-info/METADATA,sha256=MZk20jKRlLdfSLg3MGLqcxcWkinMHdJVJGqPc1_Z9F4,4636
|
29
|
+
fosslight_dependency-3.14.1.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
30
|
+
fosslight_dependency-3.14.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
31
|
+
fosslight_dependency-3.14.1.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
32
|
+
fosslight_dependency-3.14.1.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
33
|
+
fosslight_dependency-3.14.1.dist-info/RECORD,,
|
@@ -1,33 +0,0 @@
|
|
1
|
-
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
fosslight_dependency/_analyze_dependency.py,sha256=5fJ-eAkGUVsAo0Eks9l40zyWNBm7HxGQMWD2bAbOWa0,3710
|
3
|
-
fosslight_dependency/_help.py,sha256=gBZfnYF8e4-WQnKa0z6zwXSRUKoIWtQyHbsvjvEFysE,2708
|
4
|
-
fosslight_dependency/_package_manager.py,sha256=BtmwTAPwH38nVMTzaMbewsYYm8xn2spmbJPoIIgYOMQ,12085
|
5
|
-
fosslight_dependency/constant.py,sha256=v4NisxQwmnhb3e1hIfAvwDr4i_v0euZWo3wcG7U81KM,935
|
6
|
-
fosslight_dependency/run_dependency_scanner.py,sha256=YLCQ_6oI9usfvW0ap4nQDZoornL8LQKpjWyKRnTeY_Y,11275
|
7
|
-
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
|
-
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
|
-
fosslight_dependency/package_manager/Android.py,sha256=Up4Fv57kuqddZsD8vy5VRwQW7bNtDbqRatjP8MgzGR8,2849
|
10
|
-
fosslight_dependency/package_manager/Carthage.py,sha256=GtJxBq_3cujbZoQC2KFdFQM4cEjcK_j9bsZaxEaZu6s,6075
|
11
|
-
fosslight_dependency/package_manager/Cocoapods.py,sha256=vgp3SPcZOwYqGUHVUb5-w93TrQIk7eODhTG6RgqhfCs,8087
|
12
|
-
fosslight_dependency/package_manager/Go.py,sha256=d3U_hRtcPWEYbT_JVHAB3jEUKLO4FodbF8hMEWS4JFM,5866
|
13
|
-
fosslight_dependency/package_manager/Gradle.py,sha256=SVWjZM5LIVSaANQlU9W0eoDKKsK9UaG8S7Xz7RoAeYQ,4062
|
14
|
-
fosslight_dependency/package_manager/Helm.py,sha256=ZXgbtwWNgJKRUikdtFycMIwdJPu4J7vPpVvzgNLk03Q,3925
|
15
|
-
fosslight_dependency/package_manager/Maven.py,sha256=xlQXpm9Ur0DzWa5P9VesJxm-r-mQZ_hoXYWFu7oD1LA,10157
|
16
|
-
fosslight_dependency/package_manager/Npm.py,sha256=0NUBSDBYs15H9lxqaLxh7PgxPI7ewyef8BKtVxeQg14,10495
|
17
|
-
fosslight_dependency/package_manager/Nuget.py,sha256=CzYO548zetC1YNKskUpG1gSWPGF4QrrQz77VZJ5b3Eo,8866
|
18
|
-
fosslight_dependency/package_manager/Pub.py,sha256=zRelrIAeDlLAd8uTUJzYWvLUJeOnzmGPzOx8pcMG55Y,8845
|
19
|
-
fosslight_dependency/package_manager/Pypi.py,sha256=ussVudgZ1cE53z0CoFwbAVkn_B1LZBxwIgBE71Chm60,13831
|
20
|
-
fosslight_dependency/package_manager/Swift.py,sha256=jHWor3dZzunwZt--8rdD42vDq4Z66m9fo5xFnIw5_cQ,6453
|
21
|
-
fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
23
|
-
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
24
|
-
fosslight_dependency/third_party/nomos/nomossa,sha256=oFF9I-fhug6AVNyFnWeVXwDRin6NWSvk1g7mHBotB3Q,866408
|
25
|
-
fosslight_dependency-3.13.9.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
-
fosslight_dependency-3.13.9.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
-
fosslight_dependency-3.13.9.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
28
|
-
fosslight_dependency-3.13.9.dist-info/METADATA,sha256=Icw4wIrxEhpM_B-URmicp49Epme4uihsFAmJIaH0r-E,4603
|
29
|
-
fosslight_dependency-3.13.9.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
30
|
-
fosslight_dependency-3.13.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
31
|
-
fosslight_dependency-3.13.9.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
32
|
-
fosslight_dependency-3.13.9.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
33
|
-
fosslight_dependency-3.13.9.dist-info/RECORD,,
|
{fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/Apache-2.0.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/entry_points.txt
RENAMED
File without changes
|
{fosslight_dependency-3.13.9.dist-info → fosslight_dependency-3.14.1.dist-info}/top_level.txt
RENAMED
File without changes
|