src/eric7/CycloneDXInterface/CycloneDXUtilities.py

Wed, 04 Jan 2023 14:59:40 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 04 Jan 2023 14:59:40 +0100
branch
eric7
changeset 9674
43dd357b3bff
parent 9653
e67609152c5e
child 10170
6cf1ee737d8f
permissions
-rw-r--r--

Modified the pyproject.toml file to include a reference to the license file and changed its extension to be .txt.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9509
diff changeset
3 # Copyright (c) 2022 - 2023 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
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
14 from xml.etree import ElementTree
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
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def createCycloneDXFile(venvName):
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
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @exception RuntimeError raised to indicate illegal creation parameters
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 from .CycloneDXConfigDialog import CycloneDXConfigDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 dlg = CycloneDXConfigDialog(venvName)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 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
90 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 inputSource,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 inputFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 fileFormat,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 schemaVersion,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 sbomFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 withVulnerabilities,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 withDependencies,
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
98 readableOutput,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99 metadataDict,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
100 ) = dlg.getData()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
102 # check error conditions first
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 if inputSource not in ("environment", "pipenv", "poetry", "requirements"):
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 raise RuntimeError("Unsupported input source given.")
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 if fileFormat not in ("XML", "JSON"):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 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
107
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 if inputSource == "environment":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 parser = CycloneDXEnvironmentParser(venvName)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 else:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 # all other parsers need an input file
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 if not os.path.isfile(inputFile):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 EricMessageBox.warning(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 None,
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116 "CycloneDX", "CycloneDX - SBOM Creation"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 ),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 QCoreApplication.translate(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 "CycloneDX",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 "<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
121 " exist. Aborting...</p>",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 ).format(inputFile),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 if inputSource == "pipenv":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 parser = PipEnvFileParser(pipenv_lock_filename=inputFile)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 elif inputSource == "poetry":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 parser = PoetryFileParser(poetry_lock_filename=inputFile)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 elif inputSource == "requirements":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 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
132
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
133 if withVulnerabilities:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
134 addCycloneDXVulnerabilities(parser)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
136 if withDependencies:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
137 addCycloneDXDependencies(parser, venvName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 if fileFormat == "XML":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 outputFormat = OutputFormat.XML
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 elif fileFormat == "JSON":
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 outputFormat = OutputFormat.JSON
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if parser.has_warnings():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 excludedList = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 "<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
147 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
148 ]
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 EricMessageBox.warning(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 QCoreApplication.translate(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 "CycloneDX",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 "<p>Some of the dependencies do not have pinned version"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 " numbers.<ul>{0}</ul>The above listed packages will NOT"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 " 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
157 " 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
158 ).format("".join(excludedList)),
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 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
162 _amendMetaData(bom.metadata, metadataDict)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 output = get_output_instance(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 bom=bom,
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 output_format=outputFormat,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166 schema_version=SchemaVersion[
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167 "V{0}".format(schemaVersion.replace(".", "_"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 ],
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 )
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
170 outputStr = output.output_as_string()
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
171 if readableOutput:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
172 if fileFormat == "XML":
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
173 outputStr = _prettifyXML(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
174 elif fileFormat == "JSON":
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
175 outputStr = _prettifyJSON(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
176
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
177 try:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
178 with open(sbomFile, "w", encoding="utf-8") as f:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
179 f.write(outputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
180 EricMessageBox.information(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
181 None,
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
182 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
183 QCoreApplication.translate(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
184 "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
185 ).format(sbomFile),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
186 )
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
187 except OSError as err:
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
188 EricMessageBox.critical(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
189 None,
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
190 QCoreApplication.translate("CycloneDX", "CycloneDX - SBOM Creation"),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
191 QCoreApplication.translate(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
192 "CycloneDX",
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
193 "<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
194 "<p>Reason: {1}</p>",
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
195 ).format(sbomFile, str(err)),
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
196 )
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
197
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
199 def _prettifyXML(inputStr):
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
200 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
201 Function to prettify the SBOM XML output generated by CycloneDX.
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 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
204
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
205 @param inputStr output generated by CycloneDX
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
206 @type str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
207 @return prettified SBOM string
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
208 @rtype str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
209 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
210 tree = ElementTree.fromstring(inputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
211 with contextlib.suppress(AttributeError):
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
212 ElementTree.indent(tree)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
213 return '<?xml version="1.0" encoding="UTF-8"?>\n' + ElementTree.tostring(
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
214 tree, encoding="unicode"
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 )
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
216
9509
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
217 return inputStr
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
218
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
219
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
220 def _prettifyJSON(inputStr):
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 Function to prettify the SBOM JSON output generated by CycloneDX.
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 @param inputStr output generated by CycloneDX
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
225 @type str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
226 @return prettified SBOM string
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
227 @rtype str
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
228 """
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
229 sbom = json.loads(inputStr)
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
230 return json.dumps(sbom, indent=" ")
c06561080e32 CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
231
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
232
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
233 def addCycloneDXVulnerabilities(parser):
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 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
236
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
237 @param parser reference to the parser object containing the list of
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
238 components
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
239 @type BaseParser
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
240 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
241 components = parser.get_components()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
243 packages = [
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
244 Package(name=component.name, version=component.version)
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
245 for component in components
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
246 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
247
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
248 pip = ericApp().getObject("Pip")
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
249 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
250
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
251 if error == VulnerabilityCheckError.OK:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
252 for package in vulnerabilities:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
253 component = findCyccloneDXComponent(components, package)
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
254 if component:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
255 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
256 component.add_vulnerability(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257 Vulnerability(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258 id=vuln.cve,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 description=vuln.advisory,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260 recommendation="upgrade required",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
261 source=VulnerabilitySource(name="pyup.io"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263 )
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
264
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
265
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
266 def addCycloneDXDependencies(parser, venvName):
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
267 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
268 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
269
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
270 @param parser reference to the parser object containing the list of
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
271 components
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
272 @type BaseParser
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
273 @param venvName name of the virtual environment
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
274 @type str
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
275 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
276 components = parser.get_components()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
278 pip = ericApp().getObject("Pip")
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
279 dependencies = pip.getDependencyTree(venvName)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
280 for dependency in dependencies:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
281 _addCycloneDXDependency(dependency, components)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
282
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
283
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
284 def _addCycloneDXDependency(dependency, components):
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 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
287
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
288 @param dependency dependency to be added
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
289 @type dict
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
290 @param components list of components
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
291 @type list of Component
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
292 """
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
293 component = findCyccloneDXComponent(components, dependency["package_name"])
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
294 if component is not None:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
295 bomRefs = component.dependencies
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
296 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
297 depComponent = findCyccloneDXComponent(components, dep["package_name"])
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
298 if depComponent is not None:
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
299 bomRefs.add(depComponent.bom_ref)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
300 # recursively add sub-dependencies
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
301 _addCycloneDXDependency(dep, components)
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
302 component.dependencies = bomRefs
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
303
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
304
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
305 def findCyccloneDXComponent(components, name):
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
306 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
307 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
308
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
309 @param components list of components to scan
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
310 @type list of Component
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
311 @param name name of the component to search for
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
312 @type str
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
313 @return reference to the found component or None
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
314 @rtype Component or None
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
315 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
316 for component in components:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
317 if component.name == name:
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
318 return component
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
320 return None
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
321
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
322
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
323 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
324 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
325 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
326
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
327 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
328 <ul>
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
329 <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
330 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
332 @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
333 @type BomMetaData
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
334 @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
335 @type dict
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
336 @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
337 @rtype BomMetaData
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
338 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
339 # 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
340 try:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
341 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
342
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 __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
344 except Exception:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
345 from eric7.UI.Info 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
346
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
347 __EricToolVersion = Version
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 EricTool = Tool(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 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
351 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 EricTool.external_references.update(
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 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 reference_type=ExternalReferenceType.DISTRIBUTION,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 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
357 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 reference_type=ExternalReferenceType.DOCUMENTATION,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 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
361 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 reference_type=ExternalReferenceType.ISSUE_TRACKER,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364 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
365 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 reference_type=ExternalReferenceType.LICENSE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 url=XsUri(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 "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
370 "LICENSE.txt"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
373 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 reference_type=ExternalReferenceType.RELEASE_NOTES,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375 url=XsUri(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376 "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
377 "changelog"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381 reference_type=ExternalReferenceType.VCS,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382 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
383 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 ExternalReference(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 reference_type=ExternalReferenceType.WEBSITE,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 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
387 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 )
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
390 bomMetaData.tools.add(EricTool)
9221
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 # 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
393 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
394 if metadataDict["AuthorName"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395 bomMetaData.authors = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
396 OrganizationalContact(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 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
398 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399 ]
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
400 if metadataDict["Manufacturer"]:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
401 bomMetaData.manufacture = OrganizationalEntity(
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
402 name=metadataDict["Manufacturer"]
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
403 )
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
404 if metadataDict["Supplier"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
405 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
406 if metadataDict["License"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407 bomMetaData.licenses = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
408 LicenseChoice(license_expression=metadataDict["License"])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409 ]
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
410 if metadataDict["Name"]:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
411 bomMetaData.component = Component(
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
412 name=metadataDict["Name"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
413 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
414 version=metadataDict["Version"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
415 description=metadataDict["Description"],
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
416 author=metadataDict["AuthorName"],
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
417 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
418 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
419
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
420 return bomMetaData

eric ide

mercurial