src/eric7/CycloneDXInterface/CycloneDXUtilities.py

Tue, 10 Dec 2024 15:46:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:46:34 +0100
branch
eric7
changeset 11090
f5f5f5803935
parent 11006
a671918232f3
child 11148
15e30f0c76a8
permissions
-rw-r--r--

Updated copyright for 2025.

9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2022 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the interface to CycloneDX.
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
10 import contextlib
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
11 import json
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
10170
6cf1ee737d8f Corrected some more code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
14 from xml.etree import ElementTree # secok
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
15
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
16 from cyclonedx.model import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17 ExternalReference,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 ExternalReferenceType,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 LicenseChoice,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20 OrganizationalContact,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
21 OrganizationalEntity,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22 Tool,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23 XsUri,
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
24 )
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from cyclonedx.model.bom import Bom
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 from cyclonedx.model.component import Component
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
27 from cyclonedx.model.vulnerability import Vulnerability, VulnerabilitySource
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
28 from cyclonedx.output import (
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
29 OutputFormat,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
30 SchemaVersion,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
31 get_instance as get_output_instance,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
32 )
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 from cyclonedx.parser import BaseParser
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from cyclonedx_py.parser.pipenv import PipEnvFileParser
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 from cyclonedx_py.parser.poetry import PoetryFileParser
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 from cyclonedx_py.parser.requirements import RequirementsFileParser
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
37 from packageurl import PackageURL
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
38 from PyQt6.QtCore import QCoreApplication
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
39 from PyQt6.QtWidgets import QDialog
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
41 from eric7.EricWidgets import EricMessageBox
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
42 from eric7.EricWidgets.EricApplication import ericApp
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
43 from eric7.PipInterface.PipVulnerabilityChecker import Package, VulnerabilityCheckError
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
44
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 class CycloneDXEnvironmentParser(BaseParser):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 Class implementing a parser to get package data for a named environment.
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 def __init__(self, venvName):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @param venvName name of the virtual environment
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @type str
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 super().__init__()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 pip = ericApp().getObject("Pip")
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 packages = pip.getLicenses(venvName)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 for package in packages:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 comp = Component(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 name=package["Name"],
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 version=package["Version"],
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 author=package["Author"],
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 description=package["Description"],
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 purl=PackageURL(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69 type="pypi", name=package["Name"], version=package["Version"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 ),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 for lic in package["License"].split(";"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 comp.licenses.add(LicenseChoice(license_expression=lic.strip()))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self._components.append(comp)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10716
diff changeset
78 def createCycloneDXFile(venvName, parent=None):
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Function to create a CyccloneDX SBOM file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param venvName name of the virtual environment
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type str
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10716
diff changeset
84 @param parent referent to a parent widget (defaults to None)
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10716
diff changeset
85 @type QWidget (optional)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @exception RuntimeError raised to indicate illegal creation parameters
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 from .CycloneDXConfigDialog import CycloneDXConfigDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10716
diff changeset
90 dlg = CycloneDXConfigDialog(venvName, parent=parent)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 if dlg.exec() == QDialog.DialogCode.Accepted:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 inputSource,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 inputFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 fileFormat,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 schemaVersion,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 sbomFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 withVulnerabilities,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99 withDependencies,
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
100 readableOutput,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101 metadataDict,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102 ) = dlg.getData()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
104 # check error conditions first
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 if inputSource not in ("environment", "pipenv", "poetry", "requirements"):
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 raise RuntimeError("Unsupported input source given.")
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 if fileFormat not in ("XML", "JSON"):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 raise RuntimeError("Unsupported SBOM file format given.")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if inputSource == "environment":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 parser = CycloneDXEnvironmentParser(venvName)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 else:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 # all other parsers need an input file
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 if not os.path.isfile(inputFile):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 EricMessageBox.warning(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 None,
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 "CycloneDX", "CycloneDX - SBOM Creation"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119 ),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 QCoreApplication.translate(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 "CycloneDX",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 "<p>The configured input file <b>{0}</b> does not"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 " exist. Aborting...</p>",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 ).format(inputFile),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 if inputSource == "pipenv":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 parser = PipEnvFileParser(pipenv_lock_filename=inputFile)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 elif inputSource == "poetry":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 parser = PoetryFileParser(poetry_lock_filename=inputFile)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 elif inputSource == "requirements":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 parser = RequirementsFileParser(requirements_file=inputFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
135 if withVulnerabilities:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
136 addCycloneDXVulnerabilities(parser)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
138 if withDependencies:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
139 addCycloneDXDependencies(parser, venvName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if fileFormat == "XML":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 outputFormat = OutputFormat.XML
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 elif fileFormat == "JSON":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 outputFormat = OutputFormat.JSON
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 if parser.has_warnings():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147 excludedList = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 "<li>{0}</li>".format(warning.get_item())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 for warning in parser.get_warnings()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 ]
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 EricMessageBox.warning(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 QCoreApplication.translate(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 "CycloneDX",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 "<p>Some of the dependencies do not have pinned version"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 " numbers.<ul>{0}</ul>The above listed packages will NOT"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 " be included in the generated CycloneDX SBOM file as"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159 " version is a mandatory field.</p>",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 ).format("".join(excludedList)),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 bom = Bom.from_parser(parser=parser)
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
164 _amendMetaData(bom.metadata, metadataDict)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 output = get_output_instance(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 bom=bom,
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 output_format=outputFormat,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 schema_version=SchemaVersion[
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 "V{0}".format(schemaVersion.replace(".", "_"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 ],
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 )
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
172 outputStr = output.output_as_string()
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
173 if readableOutput:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
174 if fileFormat == "XML":
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
175 outputStr = _prettifyXML(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
176 elif fileFormat == "JSON":
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
177 outputStr = _prettifyJSON(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
178
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
179 try:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
180 with open(sbomFile, "w", encoding="utf-8") as f:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
181 f.write(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
182 EricMessageBox.information(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
183 None,
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
184 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
185 QCoreApplication.translate(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
186 "CycloneDX", "<p>The SBOM data was written to file <b>{0}</b>.</p>"
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
187 ).format(sbomFile),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
188 )
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
189 except OSError as err:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
190 EricMessageBox.critical(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
191 None,
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
192 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
193 QCoreApplication.translate(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
194 "CycloneDX",
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
195 "<p>The SBOM file <b>{0}</b> could not be written.</p>"
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
196 "<p>Reason: {1}</p>",
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
197 ).format(sbomFile, str(err)),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
198 )
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
199
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
200
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
201 def _prettifyXML(inputStr):
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
202 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
203 Function to prettify the SBOM XML output generated by CycloneDX.
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
204
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
205 Note: Prettifying an XML tree works only with Python 3.9 and above!
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
206
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
207 @param inputStr output generated by CycloneDX
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
208 @type str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
209 @return prettified SBOM string
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
210 @rtype str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
211 """
10170
6cf1ee737d8f Corrected some more code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
212 tree = ElementTree.fromstring(inputStr) # secok
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
213 with contextlib.suppress(AttributeError):
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
214 ElementTree.indent(tree)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
215 return '<?xml version="1.0" encoding="UTF-8"?>\n' + ElementTree.tostring(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
216 tree, encoding="unicode"
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 )
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
218
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
219 return inputStr
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
220
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
221
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
222 def _prettifyJSON(inputStr):
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
223 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
224 Function to prettify the SBOM JSON output generated by CycloneDX.
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
225
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
226 @param inputStr output generated by CycloneDX
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
227 @type str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
228 @return prettified SBOM string
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
229 @rtype str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
230 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
231 sbom = json.loads(inputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
232 return json.dumps(sbom, indent=" ")
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
233
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
234
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
235 def addCycloneDXVulnerabilities(parser):
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
236 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
237 Function to add vulnerability data to the list of created components.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
239 @param parser reference to the parser object containing the list of
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
240 components
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
241 @type BaseParser
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
242 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
243 components = parser.get_components()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
245 packages = [
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
246 Package(name=component.name, version=component.version)
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
247 for component in components
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
248 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
250 pip = ericApp().getObject("Pip")
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
251 error, vulnerabilities = pip.getVulnerabilityChecker().check(packages)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
252
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
253 if error == VulnerabilityCheckError.OK:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
254 for package in vulnerabilities:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
255 component = findCyccloneDXComponent(components, package)
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
256 if component:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
257 for vuln in vulnerabilities[package]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258 component.add_vulnerability(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 Vulnerability(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260 id=vuln.cve,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
261 description=vuln.advisory,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262 recommendation="upgrade required",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263 source=VulnerabilitySource(name="pyup.io"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
264 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
265 )
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
266
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
267
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
268 def addCycloneDXDependencies(parser, venvName):
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
269 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
270 Function to add dependency data to the list of created components.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
272 @param parser reference to the parser object containing the list of
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
273 components
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
274 @type BaseParser
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
275 @param venvName name of the virtual environment
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
276 @type str
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
277 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
278 components = parser.get_components()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
280 pip = ericApp().getObject("Pip")
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
281 dependencies = pip.getDependencyTree(venvName)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
282 for dependency in dependencies:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
283 _addCycloneDXDependency(dependency, components)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
284
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
285
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
286 def _addCycloneDXDependency(dependency, components):
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
287 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
288 Function to add a dependency to the given list of components.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
290 @param dependency dependency to be added
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
291 @type dict
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
292 @param components list of components
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
293 @type list of Component
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
294 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
295 component = findCyccloneDXComponent(components, dependency["package_name"])
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
296 if component is not None:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
297 bomRefs = component.dependencies
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
298 for dep in dependency["dependencies"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299 depComponent = findCyccloneDXComponent(components, dep["package_name"])
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
300 if depComponent is not None:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
301 bomRefs.add(depComponent.bom_ref)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
302 # recursively add sub-dependencies
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
303 _addCycloneDXDependency(dep, components)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
304 component.dependencies = bomRefs
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
305
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
306
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
307 def findCyccloneDXComponent(components, name):
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
308 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
309 Function to find a component in a given list of components.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
311 @param components list of components to scan
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
312 @type list of Component
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
313 @param name name of the component to search for
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
314 @type str
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
315 @return reference to the found component or None
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
316 @rtype Component or None
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
317 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
318 for component in components:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
319 if component.name == name:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
320 return component
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
322 return None
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
323
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
324
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
325 def _amendMetaData(bomMetaData, metadataDict):
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
326 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
327 Function to amend the SBOM meta data according the given data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
329 The modifications done are:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
330 <ul>
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
331 <li>add eric7 to the tools</li>
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
332 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
334 @param bomMetaData reference to the SBOM meta data object
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
335 @type BomMetaData
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
336 @param metadataDict dictionary containing additional meta data
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
337 @type dict
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
338 @return reference to the modified SBOM meta data object
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
339 @rtype BomMetaData
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
340 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
341 # add a Tool entry for eric7
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
342 try:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
343 from importlib.metadata import version as meta_version # __IGNORE_WARNING_I10__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 __EricToolVersion = str(meta_version("eric-ide"))
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
346 except Exception:
10716
11cdcc824469 Relocated the Version information into a top level '__version__.py' module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
347 from eric7.__version__ import Version # __IGNORE_WARNING_I101__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
349 __EricToolVersion = Version
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 EricTool = Tool(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 vendor="python-projects.org", name="eric-ide", version=__EricToolVersion
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354 EricTool.external_references.update(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 reference_type=ExternalReferenceType.DISTRIBUTION,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 url=XsUri("https://pypi.org/project/eric-ide/"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 reference_type=ExternalReferenceType.DOCUMENTATION,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 url=XsUri("https://pypi.org/project/eric-ide/"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365 reference_type=ExternalReferenceType.ISSUE_TRACKER,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 url=XsUri("https://tracker.die-offenbachs.homelinux.org"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 reference_type=ExternalReferenceType.LICENSE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
370 url=XsUri(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371 "https://hg.die-offenbachs.homelinux.org/eric/file/tip/docs/"
9674
43dd357b3bff Modified the pyproject.toml file to include a reference to the license file and changed its extension to be .txt.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
372 "LICENSE.txt"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
373 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376 reference_type=ExternalReferenceType.RELEASE_NOTES,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377 url=XsUri(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 "https://hg.die-offenbachs.homelinux.org/eric/file/tip/docs/"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 "changelog"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383 reference_type=ExternalReferenceType.VCS,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 url=XsUri("https://hg.die-offenbachs.homelinux.org/eric"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
387 reference_type=ExternalReferenceType.WEBSITE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 url=XsUri("https://eric-ide.python-projects.org"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
391 )
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
392 bomMetaData.tools.add(EricTool)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
394 # add the meta data info entered by the user (if any)
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
395 if metadataDict is not None:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
396 if metadataDict["AuthorName"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 bomMetaData.authors = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
398 OrganizationalContact(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399 name=metadataDict["AuthorName"], email=metadataDict["AuthorEmail"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
400 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
401 ]
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
402 if metadataDict["Manufacturer"]:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
403 bomMetaData.manufacture = OrganizationalEntity(
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
404 name=metadataDict["Manufacturer"]
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
405 )
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
406 if metadataDict["Supplier"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407 bomMetaData.supplier = OrganizationalEntity(name=metadataDict["Supplier"])
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
408 if metadataDict["License"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409 bomMetaData.licenses = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
410 LicenseChoice(license_expression=metadataDict["License"])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411 ]
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
412 if metadataDict["Name"]:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
413 bomMetaData.component = Component(
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
414 name=metadataDict["Name"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
415 component_type=metadataDict["Type"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
416 version=metadataDict["Version"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
417 description=metadataDict["Description"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
418 author=metadataDict["AuthorName"],
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
419 licenses=[LicenseChoice(license_expression=metadataDict["License"])],
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
420 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
422 return bomMetaData

eric ide

mercurial