fosslight-dependency 3.14.2__tar.gz → 3.15.0__tar.gz

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.
Files changed (36) hide show
  1. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/PKG-INFO +9 -1
  2. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/README.md +8 -0
  3. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/setup.py +1 -1
  4. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/_package_manager.py +84 -17
  5. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Android.py +12 -7
  6. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Go.py +10 -0
  7. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Unity.py +2 -0
  8. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/PKG-INFO +9 -1
  9. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/LICENSE +0 -0
  10. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/LICENSES/Apache-2.0.txt +0 -0
  11. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/LICENSES/LicenseRef-3rd_party_licenses.txt +0 -0
  12. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/LICENSES/MIT.txt +0 -0
  13. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/MANIFEST.in +0 -0
  14. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/requirements.txt +0 -0
  15. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/setup.cfg +0 -0
  16. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/__init__.py +0 -0
  17. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/_analyze_dependency.py +0 -0
  18. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/_help.py +0 -0
  19. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/constant.py +0 -0
  20. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Carthage.py +0 -0
  21. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Cocoapods.py +0 -0
  22. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Gradle.py +0 -0
  23. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Helm.py +0 -0
  24. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Maven.py +0 -0
  25. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Npm.py +0 -0
  26. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Nuget.py +0 -0
  27. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Pub.py +0 -0
  28. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Pypi.py +0 -0
  29. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/Swift.py +0 -0
  30. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/package_manager/__init__.py +0 -0
  31. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency/run_dependency_scanner.py +0 -0
  32. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/SOURCES.txt +0 -0
  33. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/dependency_links.txt +0 -0
  34. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/entry_points.txt +0 -0
  35. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/requires.txt +0 -0
  36. {fosslight_dependency-3.14.2 → fosslight_dependency-3.15.0}/src/fosslight_dependency.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight_dependency
3
- Version: 3.14.2
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
@@ -133,6 +133,14 @@ Description: <!--
133
133
  <td>X</td>
134
134
  <td>X</td>
135
135
  </tr>
136
+ <tr>
137
+ <td>Unity</td>
138
+ <td>Unity</td>
139
+ <td>Library/PackageManager/ProjectCache</td>
140
+ <td>O</td>
141
+ <td>O</td>
142
+ <td>X</td>
143
+ </tr>
136
144
  </tbody>
137
145
  </table>
138
146
 
@@ -125,6 +125,14 @@ In this user guide, you can see how to install the FOSSLight Dependency Scanner
125
125
  <td>X</td>
126
126
  <td>X</td>
127
127
  </tr>
128
+ <tr>
129
+ <td>Unity</td>
130
+ <td>Unity</td>
131
+ <td>Library/PackageManager/ProjectCache</td>
132
+ <td>O</td>
133
+ <td>O</td>
134
+ <td>X</td>
135
+ </tr>
128
136
  </tbody>
129
137
  </table>
130
138
 
@@ -35,7 +35,7 @@ if __name__ == "__main__":
35
35
 
36
36
  setup(
37
37
  name=_PACKAEG_NAME,
38
- version='3.14.2',
38
+ version='3.15.0',
39
39
  package_dir={"": "src"},
40
40
  packages=find_namespace_packages(where='src'),
41
41
  description='FOSSLight Dependency Scanner',
@@ -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 True
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
- ret = self.add_allDeps_in_gradle()
95
- if ret:
96
- try:
97
- if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
98
- if self.platform == const.WINDOWS:
99
- cmd_gradle = "gradlew.bat"
100
- else:
101
- cmd_gradle = "./gradlew"
102
-
103
- cmd = f"{cmd_gradle} allDeps"
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
- except Exception as e:
111
- self.set_direct_dependencies(False)
112
- logger.error(f'Fail to run allDeps: {e}')
113
- logger.warning('It cannot print the direct/transitive dependencies relationship.')
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(self.app_name, _plugin_output_file)
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 check_input_path(self, app_name, _plugin_output_file):
31
- if os.path.isfile(_plugin_output_file):
32
- return _plugin_output_file
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, _plugin_output_file)
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):
@@ -84,6 +84,8 @@ class Unity(PackageManager):
84
84
  purl = get_url_to_purl(dn_loc, self.package_manager_name)
85
85
  if purl == 'None':
86
86
  purl = ''
87
+ if purl != '':
88
+ purl = f'{purl}@{oss_version}'
87
89
 
88
90
  comment_list = []
89
91
  if self.direct_dep:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight-dependency
3
- Version: 3.14.2
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
@@ -133,6 +133,14 @@ Description: <!--
133
133
  <td>X</td>
134
134
  <td>X</td>
135
135
  </tr>
136
+ <tr>
137
+ <td>Unity</td>
138
+ <td>Unity</td>
139
+ <td>Library/PackageManager/ProjectCache</td>
140
+ <td>O</td>
141
+ <td>O</td>
142
+ <td>X</td>
143
+ </tr>
136
144
  </tbody>
137
145
  </table>
138
146