fosslight-dependency 3.14.2__py3-none-any.whl → 3.15.0__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 +84 -17
- fosslight_dependency/package_manager/Android.py +12 -7
- fosslight_dependency/package_manager/Go.py +10 -0
- fosslight_dependency/package_manager/Unity.py +2 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/METADATA +9 -1
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/RECORD +13 -13
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/Apache-2.0.txt +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/LICENSE +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/LicenseRef-3rd_party_licenses.txt +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/MIT.txt +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/WHEEL +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/entry_points.txt +0 -0
- {fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/top_level.txt +0 -0
@@ -68,11 +68,12 @@ class PackageManager:
|
|
68
68
|
self.package_name = ''
|
69
69
|
|
70
70
|
def run_plugin(self):
|
71
|
+
ret = True
|
71
72
|
if self.package_manager_name == const.GRADLE or self.package_manager_name == const.ANDROID:
|
72
|
-
self.run_gradle_task()
|
73
|
+
ret = self.run_gradle_task()
|
73
74
|
else:
|
74
75
|
logger.info(f"This package manager({self.package_manager_name}) skips the step to run plugin.")
|
75
|
-
return
|
76
|
+
return ret
|
76
77
|
|
77
78
|
def append_input_package_list_file(self, input_package_file):
|
78
79
|
self.input_package_list_file.append(input_package_file)
|
@@ -87,35 +88,101 @@ class PackageManager:
|
|
87
88
|
pass
|
88
89
|
|
89
90
|
def run_gradle_task(self):
|
91
|
+
ret_task = True
|
90
92
|
if os.path.isfile(const.SUPPORT_PACKAE.get(self.package_manager_name)):
|
91
93
|
gradle_backup = f'{const.SUPPORT_PACKAE.get(self.package_manager_name)}_bk'
|
92
94
|
|
93
95
|
shutil.copy(const.SUPPORT_PACKAE.get(self.package_manager_name), gradle_backup)
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
96
|
+
ret_alldeps = self.add_allDeps_in_gradle()
|
97
|
+
|
98
|
+
ret_plugin = False
|
99
|
+
if (self.package_manager_name == const.ANDROID):
|
100
|
+
module_build_gradle = os.path.join(self.app_name, const.SUPPORT_PACKAE.get(self.package_manager_name))
|
101
|
+
module_gradle_backup = f'{module_build_gradle}_bk'
|
102
|
+
if os.path.isfile(module_build_gradle) and (not os.path.isfile(self.input_file_name)):
|
103
|
+
shutil.copy(module_build_gradle, module_gradle_backup)
|
104
|
+
ret_plugin = self.add_android_plugin_in_gradle(module_build_gradle)
|
105
|
+
|
106
|
+
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
|
107
|
+
if self.platform == const.WINDOWS:
|
108
|
+
cmd_gradle = "gradlew.bat"
|
109
|
+
else:
|
110
|
+
cmd_gradle = "./gradlew"
|
111
|
+
else:
|
112
|
+
ret_task = False
|
113
|
+
logger.warning('No gradlew file exists. (skip to find dependencies relationship.')
|
114
|
+
if ret_plugin:
|
115
|
+
logger.warning('Also it cannot run android-dependency-scanning plugin.')
|
116
|
+
if ret_task:
|
117
|
+
if ret_alldeps:
|
118
|
+
cmd = f"{cmd_gradle} allDeps"
|
119
|
+
try:
|
104
120
|
ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
|
105
121
|
if ret != 0:
|
106
122
|
self.parse_dependency_tree(ret)
|
107
123
|
else:
|
108
124
|
self.set_direct_dependencies(False)
|
109
125
|
logger.warning("Failed to run allDeps task.")
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
126
|
+
except Exception as e:
|
127
|
+
self.set_direct_dependencies(False)
|
128
|
+
logger.error(f'Fail to run {cmd}: {e}')
|
129
|
+
logger.warning('It cannot print the direct/transitive dependencies relationship.')
|
130
|
+
|
131
|
+
if ret_plugin:
|
132
|
+
cmd = f"{cmd_gradle} generateLicenseTxt"
|
133
|
+
try:
|
134
|
+
ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
|
135
|
+
if ret == 0:
|
136
|
+
ret_task = False
|
137
|
+
logger.error(f'Fail to run {cmd}')
|
138
|
+
if os.path.isfile(self.input_file_name):
|
139
|
+
logger.info('Automatically run android-dependency-scanning plugin and generate output.')
|
140
|
+
self.plugin_auto_run = True
|
141
|
+
else:
|
142
|
+
logger.warning('Automatically run android-dependency-scanning plugin, but fail to generate output.')
|
143
|
+
except Exception as e:
|
144
|
+
logger.error(f'Fail to run {cmd}: {e}')
|
145
|
+
ret_task = False
|
114
146
|
|
115
147
|
if os.path.isfile(gradle_backup):
|
116
148
|
os.remove(const.SUPPORT_PACKAE.get(self.package_manager_name))
|
117
149
|
shutil.move(gradle_backup, const.SUPPORT_PACKAE.get(self.package_manager_name))
|
118
150
|
|
151
|
+
if (self.package_manager_name == const.ANDROID):
|
152
|
+
if os.path.isfile(module_gradle_backup):
|
153
|
+
os.remove(module_build_gradle)
|
154
|
+
shutil.move(module_gradle_backup, module_build_gradle)
|
155
|
+
return ret_task
|
156
|
+
|
157
|
+
def add_android_plugin_in_gradle(self, module_build_gradle):
|
158
|
+
ret = False
|
159
|
+
build_script = '''buildscript {
|
160
|
+
repositories {
|
161
|
+
mavenCentral()
|
162
|
+
}
|
163
|
+
dependencies {
|
164
|
+
//Android dependency scanning Plugin
|
165
|
+
classpath 'org.fosslight:android-dependency-scanning:+'
|
166
|
+
}
|
167
|
+
}'''
|
168
|
+
apply = "apply plugin: 'org.fosslight'\n"
|
169
|
+
try:
|
170
|
+
with open(const.SUPPORT_PACKAE.get(self.package_manager_name), 'r', encoding='utf-8') as original:
|
171
|
+
data = original.read()
|
172
|
+
with open(const.SUPPORT_PACKAE.get(self.package_manager_name), 'w', encoding='utf-8') as modified:
|
173
|
+
modified.write(f"{build_script}\n{data}")
|
174
|
+
ret = True
|
175
|
+
except Exception as e:
|
176
|
+
logging.warning(f"Cannot add the buildscript task in build.gradle: {e}")
|
177
|
+
|
178
|
+
try:
|
179
|
+
with open(module_build_gradle, 'a', encoding='utf-8') as modified:
|
180
|
+
modified.write(f'\n{apply}\n')
|
181
|
+
ret = True
|
182
|
+
except Exception as e:
|
183
|
+
logging.warning(f"Cannot add the apply plugin in {module_build_gradle}: {e}")
|
184
|
+
return ret
|
185
|
+
|
119
186
|
def add_allDeps_in_gradle(self):
|
120
187
|
ret = False
|
121
188
|
config = android_config if self.package_manager_name == 'android' else gradle_config
|
@@ -132,7 +199,7 @@ class PackageManager:
|
|
132
199
|
}}'''
|
133
200
|
try:
|
134
201
|
with open(const.SUPPORT_PACKAE.get(self.package_manager_name), 'a', encoding='utf8') as f:
|
135
|
-
f.write(allDeps)
|
202
|
+
f.write(f'\n{allDeps}\n')
|
136
203
|
ret = True
|
137
204
|
except Exception as e:
|
138
205
|
logging.warning(f"Cannot add the allDeps task in build.gradle: {e}")
|
@@ -11,27 +11,32 @@ from fosslight_dependency._package_manager import PackageManager, get_url_to_pur
|
|
11
11
|
|
12
12
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
13
13
|
|
14
|
-
_plugin_output_file = 'android_dependency_output.txt'
|
15
|
-
|
16
14
|
|
17
15
|
class Android(PackageManager):
|
18
16
|
package_manager_name = const.ANDROID
|
19
17
|
|
18
|
+
plugin_output_file = 'android_dependency_output.txt'
|
20
19
|
app_name = const.default_app_name
|
21
20
|
input_file_name = ''
|
21
|
+
plugin_auto_run = False
|
22
22
|
|
23
23
|
def __init__(self, input_dir, output_dir, app_name):
|
24
24
|
super().__init__(self.package_manager_name, '', input_dir, output_dir)
|
25
25
|
if app_name:
|
26
26
|
self.app_name = app_name
|
27
|
-
self.input_file_name = self.check_input_path(
|
27
|
+
self.input_file_name = self.check_input_path()
|
28
28
|
self.append_input_package_list_file(self.input_file_name)
|
29
29
|
|
30
|
-
def
|
31
|
-
if
|
32
|
-
|
30
|
+
def __del__(self):
|
31
|
+
if self.plugin_auto_run:
|
32
|
+
if os.path.isfile(self.input_file_name):
|
33
|
+
os.remove(self.input_file_name)
|
34
|
+
|
35
|
+
def check_input_path(self):
|
36
|
+
if os.path.isfile(self.plugin_output_file):
|
37
|
+
return self.plugin_output_file
|
33
38
|
else:
|
34
|
-
return os.path.join(app_name,
|
39
|
+
return os.path.join(self.app_name, self.plugin_output_file)
|
35
40
|
|
36
41
|
def parse_oss_information(self, f_name):
|
37
42
|
with open(f_name, 'r', encoding='utf8') as input_fp:
|
@@ -10,6 +10,7 @@ import json
|
|
10
10
|
from bs4 import BeautifulSoup
|
11
11
|
import urllib.request
|
12
12
|
import re
|
13
|
+
import shutil
|
13
14
|
import fosslight_util.constant as constant
|
14
15
|
import fosslight_dependency.constant as const
|
15
16
|
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
@@ -24,6 +25,8 @@ class Go(PackageManager):
|
|
24
25
|
is_run_plugin = False
|
25
26
|
dn_url = 'https://pkg.go.dev/'
|
26
27
|
tmp_file_name = 'tmp_go_list.json'
|
28
|
+
go_work = 'go.work'
|
29
|
+
tmp_go_work = 'go.work.tmp'
|
27
30
|
|
28
31
|
def __init__(self, input_dir, output_dir):
|
29
32
|
super().__init__(self.package_manager_name, self.dn_url, input_dir, output_dir)
|
@@ -33,6 +36,8 @@ class Go(PackageManager):
|
|
33
36
|
def __del__(self):
|
34
37
|
if os.path.isfile(self.tmp_file_name):
|
35
38
|
os.remove(self.tmp_file_name)
|
39
|
+
if os.path.isfile(self.tmp_go_work):
|
40
|
+
shutil.move(self.tmp_go_work, self.go_work)
|
36
41
|
|
37
42
|
def parse_dependency_tree(self, go_deptree_txt):
|
38
43
|
for line in go_deptree_txt.split('\n'):
|
@@ -49,6 +54,9 @@ class Go(PackageManager):
|
|
49
54
|
def run_plugin(self):
|
50
55
|
ret = True
|
51
56
|
|
57
|
+
if os.path.isfile(self.go_work):
|
58
|
+
shutil.move(self.go_work, self.tmp_go_work)
|
59
|
+
|
52
60
|
logger.info("Execute 'go list -m -mod=mod -json all' to obtain package info.")
|
53
61
|
cmd = f"go list -m -mod=mod -json all > {self.tmp_file_name}"
|
54
62
|
|
@@ -64,6 +72,8 @@ class Go(PackageManager):
|
|
64
72
|
if ret_cmd_tree != 0:
|
65
73
|
self.parse_dependency_tree(ret_cmd_tree)
|
66
74
|
|
75
|
+
if os.path.isfile(self.tmp_go_work):
|
76
|
+
shutil.move(self.tmp_go_work, self.go_work)
|
67
77
|
return ret
|
68
78
|
|
69
79
|
def parse_oss_information(self, f_name):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fosslight-dependency
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.15.0
|
4
4
|
Summary: FOSSLight Dependency Scanner
|
5
5
|
Home-page: https://github.com/fosslight/fosslight_dependency_scanner
|
6
6
|
Author: LG Electronics
|
@@ -153,6 +153,14 @@ In this user guide, you can see how to install the FOSSLight Dependency Scanner
|
|
153
153
|
<td>X</td>
|
154
154
|
<td>X</td>
|
155
155
|
</tr>
|
156
|
+
<tr>
|
157
|
+
<td>Unity</td>
|
158
|
+
<td>Unity</td>
|
159
|
+
<td>Library/PackageManager/ProjectCache</td>
|
160
|
+
<td>O</td>
|
161
|
+
<td>O</td>
|
162
|
+
<td>X</td>
|
163
|
+
</tr>
|
156
164
|
</tbody>
|
157
165
|
</table>
|
158
166
|
|
@@ -1,15 +1,15 @@
|
|
1
1
|
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
fosslight_dependency/_analyze_dependency.py,sha256=f66gNPSluuDqx0e_7iyIuoSC_HNjpSitL_e1lak6kEA,3872
|
3
3
|
fosslight_dependency/_help.py,sha256=7B-B-j8IXuZhhoeuRvcbj5AiyGQmqg6qMbv8zbDl95c,2730
|
4
|
-
fosslight_dependency/_package_manager.py,sha256=
|
4
|
+
fosslight_dependency/_package_manager.py,sha256=pVwD9KVYgJygPMDUqh2SckOEjFOZ4T0wAx5_hhHHQYY,17094
|
5
5
|
fosslight_dependency/constant.py,sha256=1mJGu1SYyxVKo0W_pCIt-ANp52E_I5ovXFvpl2OMmjU,1039
|
6
6
|
fosslight_dependency/run_dependency_scanner.py,sha256=9fktktCcY5Po3Hqxdh04Q8U-SbRNsu50WAPjQSrjZ3o,12795
|
7
7
|
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
8
|
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
|
-
fosslight_dependency/package_manager/Android.py,sha256=
|
9
|
+
fosslight_dependency/package_manager/Android.py,sha256=JJZUYjefb3BZBk6ai-A3TMN8NZ4ydMfYAKq6k1BElsQ,3155
|
10
10
|
fosslight_dependency/package_manager/Carthage.py,sha256=OZL0ssKvN6pze0VohZ-kMeM-g-V7f5VqumpEh3o3t-U,6106
|
11
11
|
fosslight_dependency/package_manager/Cocoapods.py,sha256=X6UYX0-Tdfy_hkM0l5M54WHbhZNLLpFDzrGxeBjTmcY,8450
|
12
|
-
fosslight_dependency/package_manager/Go.py,sha256=
|
12
|
+
fosslight_dependency/package_manager/Go.py,sha256=EHTm__4ToZuR8ZoL1qzQxaT0OLcdrOv4F3d-yudaDE0,6373
|
13
13
|
fosslight_dependency/package_manager/Gradle.py,sha256=_gZjdmNDXdUEumVwwesbaCeJI5T90xzkwZy1ACFHeR8,4182
|
14
14
|
fosslight_dependency/package_manager/Helm.py,sha256=FjzQilY3GJyX8thwMGY_Rr12kw-dbehxVk6jIJNb2-M,4024
|
15
15
|
fosslight_dependency/package_manager/Maven.py,sha256=VlIc785CrFN3RBXHy80JSx2J5AlrbXhg5cquZA-qoLw,10261
|
@@ -18,17 +18,17 @@ fosslight_dependency/package_manager/Nuget.py,sha256=1YGkGktShw6xj7NGvgL763jWsnN
|
|
18
18
|
fosslight_dependency/package_manager/Pub.py,sha256=u2Wsm8raxc8fYEchyUpSpiKi-1x8seE4f0zJHD8BrMI,8964
|
19
19
|
fosslight_dependency/package_manager/Pypi.py,sha256=QakFlbGrb3oOXwRj498x5k2GFS1SgNeMpgMwUpBcwWU,15698
|
20
20
|
fosslight_dependency/package_manager/Swift.py,sha256=9J-LDCn0_zDBuScUeCgZIq0BQcx4n_1fhshciF9byNE,6590
|
21
|
-
fosslight_dependency/package_manager/Unity.py,sha256=
|
21
|
+
fosslight_dependency/package_manager/Unity.py,sha256=vGWtAHNtSkU8PxqKhoJNFFcUmNM2NJGRLwBmzeA21Sg,4353
|
22
22
|
fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
24
24
|
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
25
25
|
fosslight_dependency/third_party/nomos/nomossa,sha256=oFF9I-fhug6AVNyFnWeVXwDRin6NWSvk1g7mHBotB3Q,866408
|
26
|
-
fosslight_dependency-3.
|
27
|
-
fosslight_dependency-3.
|
28
|
-
fosslight_dependency-3.
|
29
|
-
fosslight_dependency-3.
|
30
|
-
fosslight_dependency-3.
|
31
|
-
fosslight_dependency-3.
|
32
|
-
fosslight_dependency-3.
|
33
|
-
fosslight_dependency-3.
|
34
|
-
fosslight_dependency-3.
|
26
|
+
fosslight_dependency-3.15.0.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
fosslight_dependency-3.15.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
28
|
+
fosslight_dependency-3.15.0.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
29
|
+
fosslight_dependency-3.15.0.dist-info/METADATA,sha256=gZi-Y-eZJt_wSLCUuhhPA52xjYFrzSU8QDyhrt1UJVE,4799
|
30
|
+
fosslight_dependency-3.15.0.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
31
|
+
fosslight_dependency-3.15.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
32
|
+
fosslight_dependency-3.15.0.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
33
|
+
fosslight_dependency-3.15.0.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
34
|
+
fosslight_dependency-3.15.0.dist-info/RECORD,,
|
{fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/Apache-2.0.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{fosslight_dependency-3.14.2.dist-info → fosslight_dependency-3.15.0.dist-info}/top_level.txt
RENAMED
File without changes
|