fosslight-dependency 3.12.6__tar.gz → 3.12.7__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 (35) hide show
  1. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/PKG-INFO +1 -1
  2. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/setup.py +1 -1
  3. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/_analyze_dependency.py +3 -0
  4. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/_package_manager.py +30 -40
  5. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/constant.py +3 -1
  6. fosslight_dependency-3.12.7/src/fosslight_dependency/package_manager/Helm.py +95 -0
  7. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency.egg-info/PKG-INFO +1 -1
  8. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency.egg-info/SOURCES.txt +1 -0
  9. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/LICENSE +0 -0
  10. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/LICENSES/Apache-2.0.txt +0 -0
  11. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/LICENSES/LicenseRef-3rd_party_licenses.txt +0 -0
  12. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/LICENSES/MIT.txt +0 -0
  13. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/MANIFEST.in +0 -0
  14. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/README.md +0 -0
  15. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/requirements.txt +0 -0
  16. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/setup.cfg +0 -0
  17. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/__init__.py +0 -0
  18. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/_help.py +0 -0
  19. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Android.py +0 -0
  20. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Carthage.py +0 -0
  21. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Cocoapods.py +0 -0
  22. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Go.py +0 -0
  23. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Gradle.py +0 -0
  24. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Maven.py +0 -0
  25. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Npm.py +0 -0
  26. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Nuget.py +0 -0
  27. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Pub.py +0 -0
  28. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Pypi.py +0 -0
  29. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/Swift.py +0 -0
  30. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/package_manager/__init__.py +0 -0
  31. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency/run_dependency_scanner.py +0 -0
  32. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency.egg-info/dependency_links.txt +0 -0
  33. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency.egg-info/entry_points.txt +0 -0
  34. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/src/fosslight_dependency.egg-info/requires.txt +0 -0
  35. {fosslight_dependency-3.12.6 → fosslight_dependency-3.12.7}/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.12.6
3
+ Version: 3.12.7
4
4
  Summary: FOSSLight Dependency Scanner
5
5
  Home-page: https://github.com/fosslight/fosslight_dependency_scanner
6
6
  Author: LG Electronics
@@ -35,7 +35,7 @@ if __name__ == "__main__":
35
35
 
36
36
  setup(
37
37
  name=_PACKAEG_NAME,
38
- version='3.12.6',
38
+ version='3.12.7',
39
39
  package_dir={"": "src"},
40
40
  packages=find_namespace_packages(where='src'),
41
41
  description='FOSSLight Dependency Scanner',
@@ -17,6 +17,7 @@ from fosslight_dependency.package_manager.Swift import Swift
17
17
  from fosslight_dependency.package_manager.Carthage import Carthage
18
18
  from fosslight_dependency.package_manager.Go import Go
19
19
  from fosslight_dependency.package_manager.Nuget import Nuget
20
+ from fosslight_dependency.package_manager.Helm import Helm
20
21
  import fosslight_util.constant as constant
21
22
 
22
23
  logger = logging.getLogger(constant.LOGGER_NAME)
@@ -50,6 +51,8 @@ def analyze_dependency(package_manager_name, input_dir, output_dir, pip_activate
50
51
  package_manager = Go(input_dir, output_dir)
51
52
  elif package_manager_name == const.NUGET:
52
53
  package_manager = Nuget(input_dir, output_dir)
54
+ elif package_manager_name == const.HELM:
55
+ package_manager = Helm(input_dir, output_dir)
53
56
  else:
54
57
  logger.error(f"Not supported package manager name: {package_manager_name}")
55
58
  ret = False
@@ -82,7 +82,6 @@ class PackageManager:
82
82
  pass
83
83
 
84
84
  def run_gradle_task(self):
85
- dependency_tree_fname = 'tmp_dependency_tree.txt'
86
85
  if os.path.isfile(const.SUPPORT_PACKAE.get(self.package_manager_name)):
87
86
  gradle_backup = f'{const.SUPPORT_PACKAE.get(self.package_manager_name)}_bk'
88
87
 
@@ -91,15 +90,20 @@ class PackageManager:
91
90
  if not ret:
92
91
  return
93
92
 
94
- ret = self.exeucte_gradle_task(dependency_tree_fname)
93
+ if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
94
+ if self.platform == const.WINDOWS:
95
+ cmd_gradle = "gradlew.bat"
96
+ else:
97
+ cmd_gradle = "./gradlew"
98
+ else:
99
+ return 1
100
+ cmd = f"{cmd_gradle} allDeps"
101
+ ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
95
102
  if ret != 0:
103
+ self.parse_dependency_tree(ret)
104
+ else:
96
105
  self.set_direct_dependencies(False)
97
106
  logger.warning("Failed to run allDeps task.")
98
- else:
99
- self.parse_dependency_tree(dependency_tree_fname)
100
-
101
- if os.path.isfile(dependency_tree_fname):
102
- os.remove(dependency_tree_fname)
103
107
 
104
108
  if os.path.isfile(gradle_backup):
105
109
  os.remove(const.SUPPORT_PACKAE.get(self.package_manager_name))
@@ -128,40 +132,26 @@ class PackageManager:
128
132
 
129
133
  return ret
130
134
 
131
- def exeucte_gradle_task(self, dependency_tree_fname):
132
- if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
133
- if self.platform == const.WINDOWS:
134
- cmd_gradle = "gradlew.bat"
135
- else:
136
- cmd_gradle = "./gradlew"
137
- else:
138
- return 1
139
- cmd = f"{cmd_gradle} allDeps > {dependency_tree_fname}"
140
-
141
- ret = subprocess.call(cmd, shell=True)
142
- return ret
143
-
144
- def parse_dependency_tree(self, f_name):
135
+ def parse_dependency_tree(self, dependency_tree_fname):
145
136
  config = android_config if self.package_manager_name == 'android' else gradle_config
146
- with open(f_name, 'r', encoding='utf8') as input_fp:
147
- packages_in_config = False
148
- for i, line in enumerate(input_fp.readlines()):
149
- try:
150
- line_bk = copy.deepcopy(line)
151
- if not packages_in_config:
152
- filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
153
- if filtered:
154
- packages_in_config = True
155
- else:
156
- if line == '':
157
- packages_in_config = False
158
- re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
159
- if re_result:
160
- self.total_dep_list.append(re_result[0][0])
161
- if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
162
- self.direct_dep_list.append(re_result[0][0])
163
- except Exception as e:
164
- logger.error(f"Failed to parse dependency tree: {e}")
137
+ packages_in_config = False
138
+ for line in dependency_tree_fname.split('\n'):
139
+ try:
140
+ line_bk = copy.deepcopy(line)
141
+ if not packages_in_config:
142
+ filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
143
+ if filtered:
144
+ packages_in_config = True
145
+ else:
146
+ if line == '':
147
+ packages_in_config = False
148
+ re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
149
+ if re_result:
150
+ self.total_dep_list.append(re_result[0][0])
151
+ if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
152
+ self.direct_dep_list.append(re_result[0][0])
153
+ except Exception as e:
154
+ logger.error(f"Failed to parse dependency tree: {e}")
165
155
 
166
156
 
167
157
  def version_refine(oss_version):
@@ -21,6 +21,7 @@ SWIFT = 'swift'
21
21
  CARTHAGE = 'carthage'
22
22
  GO = 'go'
23
23
  NUGET = 'nuget'
24
+ HELM = 'helm'
24
25
 
25
26
  # Supported package name and manifest file
26
27
  SUPPORT_PACKAE = {
@@ -34,7 +35,8 @@ SUPPORT_PACKAE = {
34
35
  SWIFT: 'Package.resolved',
35
36
  CARTHAGE: 'Cartfile.resolved',
36
37
  GO: 'go.mod',
37
- NUGET: ['packages.config', os.path.join('obj', 'project.assets.json')]
38
+ NUGET: ['packages.config', os.path.join('obj', 'project.assets.json')],
39
+ HELM: 'Chart.yaml'
38
40
  }
39
41
 
40
42
  # default android app name
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright (c) 2023 LG Electronics Inc.
4
+ # SPDX-License-Identifier: Apache-2.0
5
+
6
+ import os
7
+ import logging
8
+ import subprocess
9
+ import yaml
10
+ import shutil
11
+ import fosslight_util.constant as constant
12
+ import fosslight_dependency.constant as const
13
+ from fosslight_dependency._package_manager import PackageManager
14
+ from fosslight_util.download import extract_compressed_dir
15
+
16
+ logger = logging.getLogger(constant.LOGGER_NAME)
17
+
18
+
19
+ class Helm(PackageManager):
20
+ package_manager_name = const.HELM
21
+ tmp_charts_dir = 'tmp_charts'
22
+
23
+ input_file_name = const.SUPPORT_PACKAE.get(package_manager_name)
24
+
25
+ def __init__(self, input_dir, output_dir):
26
+ super().__init__(self.package_manager_name, '', input_dir, output_dir)
27
+ self.append_input_package_list_file(self.input_file_name)
28
+
29
+ def __del__(self):
30
+ if os.path.exists(self.tmp_charts_dir):
31
+ shutil.rmtree(self.tmp_charts_dir, ignore_errors=True)
32
+
33
+ def run_plugin(self):
34
+ ret = True
35
+ charts_dir = 'charts'
36
+ if os.path.isdir(charts_dir):
37
+ shutil.copytree(charts_dir, self.tmp_charts_dir)
38
+ else:
39
+ logger.info("Execute 'helm dependency build' to obtain package info.")
40
+ cmd = "helm dependency build"
41
+
42
+ ret_cmd = subprocess.call(cmd, shell=True)
43
+ if ret_cmd != 0:
44
+ logger.error(f"Failed to build helm dependency: {cmd}")
45
+ ret = False
46
+ else:
47
+ shutil.copytree(charts_dir, self.tmp_charts_dir)
48
+ shutil.rmtree(charts_dir, ignore_errors=True)
49
+
50
+ ret = extract_compressed_dir(self.tmp_charts_dir, self.tmp_charts_dir, False)
51
+ if not ret:
52
+ logger.error(f'Fail to extract compressed dir: {self.tmp_charts_dir}')
53
+ else:
54
+ logger.warning('Success to extract compressed dir')
55
+
56
+ return ret
57
+
58
+ def parse_oss_information(self, f_name):
59
+ dep_item_list = []
60
+ sheet_list = []
61
+
62
+ with open(f_name, 'r', encoding='utf8') as yaml_fp:
63
+ yaml_f = yaml.safe_load(yaml_fp)
64
+ for dep in yaml_f['dependencies']:
65
+ dep_item_list.append(dep['name'])
66
+ for dep in dep_item_list:
67
+ try:
68
+ f_path = os.path.join(self.tmp_charts_dir, dep, f_name)
69
+ with open(f_path, 'r', encoding='utf8') as yaml_fp:
70
+ yaml_f = yaml.safe_load(yaml_fp)
71
+ oss_name = f'{self.package_manager_name}:{yaml_f["name"]}'
72
+ oss_version = yaml_f.get('version', '')
73
+ if oss_version.startswith('v'):
74
+ oss_version = oss_version[1:]
75
+
76
+ homepage = yaml_f.get('home', '')
77
+ dn_loc = ''
78
+ if yaml_f.get('sources', '') != '':
79
+ dn_loc = yaml_f.get('sources', '')[0]
80
+
81
+ license_name = ''
82
+ if yaml_f.get('annotations', '') != '':
83
+ license_name = yaml_f['annotations'].get('licenses', '')
84
+
85
+ if self.direct_dep:
86
+ comment = 'direct'
87
+
88
+ except Exception as e:
89
+ logging.warning(f"Fail to parse chart info {dep}: {e}")
90
+ continue
91
+
92
+ sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
93
+ oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
94
+
95
+ return sheet_list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight-dependency
3
- Version: 3.12.6
3
+ Version: 3.12.7
4
4
  Summary: FOSSLight Dependency Scanner
5
5
  Home-page: https://github.com/fosslight/fosslight_dependency_scanner
6
6
  Author: LG Electronics
@@ -24,6 +24,7 @@ src/fosslight_dependency/package_manager/Carthage.py
24
24
  src/fosslight_dependency/package_manager/Cocoapods.py
25
25
  src/fosslight_dependency/package_manager/Go.py
26
26
  src/fosslight_dependency/package_manager/Gradle.py
27
+ src/fosslight_dependency/package_manager/Helm.py
27
28
  src/fosslight_dependency/package_manager/Maven.py
28
29
  src/fosslight_dependency/package_manager/Npm.py
29
30
  src/fosslight_dependency/package_manager/Nuget.py