src/eric7/CycloneDXInterface/CycloneDXConfigDialog.py

Wed, 20 Jul 2022 17:52:08 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 20 Jul 2022 17:52:08 +0200
branch
eric7
changeset 9258
52a1ff7adb16
parent 9221
bf71ee032bb4
child 9278
36448ca469c2
permissions
-rw-r--r--

Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..

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
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
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 a dialog to configure the CycloneDX SBOM generation.
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
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import pyqtSlot
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from EricWidgets.EricApplication import ericApp
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from EricWidgets.EricPathPicker import EricPathPickerModes
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .Ui_CycloneDXConfigDialog import Ui_CycloneDXConfigDialog
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class CycloneDXConfigDialog(QDialog, Ui_CycloneDXConfigDialog):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing a dialog to configure the CycloneDX SBOM generation.
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 SupportedSchemas = {
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
27 "JSON": [
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
28 (1, 4),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
29 (1, 3),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
30 (1, 2),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
31 ],
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
32 "XML": [
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
33 (1, 4),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
34 (1, 3),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
35 (1, 2),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
36 (1, 1),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
37 (1, 0),
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
38 ],
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 }
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Sources = {
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 "pipenv": "Pipfile.lock",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 "poetry": "poetry.lock",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 "requirements": "requirements.txt",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 }
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 DefaultFileFormat = "JSON"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 DefaultFileNames = {
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 "JSON": "cyclonedx.json",
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 "XML": "cyclonedx.xml",
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, environment, parent=None):
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 environment 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 @param parent reference to the parent widget (defaults to None)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @type QWidget (optional)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 super().__init__(parent)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 if environment == "<project>":
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
64 self.__project = ericApp().getObject("Project")
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
65 self.__defaultDirectory = self.__project.getProjectPath()
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 else:
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
67 self.__project = None
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 venvManager = ericApp().getObject("VirtualEnvManager")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69 self.__defaultDirectory = venvManager.getVirtualenvDirectory(environment)
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 self.environmentLabel.setText(environment)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 self.pipenvButton.setEnabled(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 os.path.isfile(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75 os.path.join(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76 self.__defaultDirectory, CycloneDXConfigDialog.Sources["pipenv"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 self.poetryButton.setEnabled(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 os.path.isfile(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82 os.path.join(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83 self.__defaultDirectory, CycloneDXConfigDialog.Sources["poetry"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87 self.requirementsButton.setEnabled(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88 os.path.isfile(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89 os.path.join(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 self.__defaultDirectory,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 CycloneDXConfigDialog.Sources["requirements"],
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 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
96 self.vulnerabilityCheckBox.toggled.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 self.__repopulateSchemaVersionComboBox
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99
9258
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100 self.filePicker.setMode(EricPathPickerModes.SAVE_FILE_ENSURE_EXTENSION_MODE)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.filePicker.setDefaultDirectory(self.__defaultDirectory)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 self.fileFormatComboBox.setCurrentText(CycloneDXConfigDialog.DefaultFileFormat)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.on_fileFormatComboBox_currentTextChanged(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 CycloneDXConfigDialog.DefaultFileFormat
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
106 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
108 self.__metadata = None
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
109 self.__metadataButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110 self.tr("Edit Metadata..."), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
111 )
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
112 self.__metadataButton.clicked.connect(self.__editMetaData)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 msh = self.minimumSizeHint()
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.resize(max(self.width(), msh.width()), msh.height())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
117 @pyqtSlot()
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
118 def __repopulateSchemaVersionComboBox(self):
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
119 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
120 Private slot to repopulate the schema version selector.
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
121 """
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
122 fileFormat = self.fileFormatComboBox.currentText()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 minSchemaVersion = (1, 4) if self.vulnerabilityCheckBox.isChecked() else (1, 0)
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
124 self.schemaVersionComboBox.clear()
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
125 self.schemaVersionComboBox.addItems(
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
126 "{0}.{1}".format(*f)
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
127 for f in CycloneDXConfigDialog.SupportedSchemas[fileFormat]
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
128 if f >= minSchemaVersion
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
129 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 @pyqtSlot(str)
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def on_fileFormatComboBox_currentTextChanged(self, fileFormat):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Private slot to handle the selection of a SBOM file format.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @param fileFormat selected format
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @type str
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 # re-populate the file schema combo box
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
140 self.__repopulateSchemaVersionComboBox()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 # set the file filter
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 if fileFormat == "JSON":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 self.filePicker.setFilters(self.tr("JSON Files (*.json);;All Files (*)"))
9258
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
145 suffix = ".json"
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 elif fileFormat == "XML":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147 self.filePicker.setFilters(self.tr("XML Files (*.xml);;All Files (*)"))
9258
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
148 suffix = ".xml"
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 else:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 self.filePicker.setFilters(self.tr("All Files (*)"))
9258
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
151 suffix = ""
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
152
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
153 filePath = self.filePicker.path()
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
154 if bool(filePath.name):
52a1ff7adb16 Implemented a little change to the CycloneDX configuration dialog to ensure the selected file has an extension and that it matches the selected format..
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
155 self.filePicker.setPath(filePath.with_suffix(suffix))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
157 @pyqtSlot()
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
158 def __editMetaData(self):
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
159 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
160 Private slot to open a dialog for editing the SBOM metadata.
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
161 """
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
162 from .CycloneDXMetaDataDialog import CycloneDXMetaDataDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
164 # populate a metadata dictionary from project data
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
165 metadata = (
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
166 {
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
167 "Name": self.__project.getProjectName(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
168 "Type": "",
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
169 "Version": self.__project.getProjectVersion(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
170 "Description": self.__project.getProjectDescription(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
171 "AuthorName": self.__project.getProjectAuthor(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
172 "AuthorEmail": self.__project.getProjectAuthorEmail(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
173 "License": self.__project.getProjectLicense(),
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
174 "Manufacturer": "",
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
175 "Supplier": "",
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
176 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 if self.__metadata is None and self.__project is not None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 else self.__metadata
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
179 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
181 dlg = CycloneDXMetaDataDialog(metadata=metadata, parent=self)
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
182 if dlg.exec() == QDialog.DialogCode.Accepted:
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
183 self.__metadata = dlg.getMetaData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def getData(self):
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 Public method to get the SBOM configuration data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @return tuple containing the input source, the input file name, the
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
190 file format, the schema version, the path of the SBOM file to be
9141
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
191 written, a flag indicating to include vulnerability information,
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
192 a flag indicating to include dependency information and a
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
193 dictionary containing the SBOM meta data
7085ece52151 Completed the SBOM generation support by adding a metadata dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9122
diff changeset
194 @rtype tuple of (str, str, str, str, str, bool, bool, dict)
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 if self.environmentButton.isChecked():
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 inputSource = "environment"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 inputFile = None
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 elif self.pipenvButton.isChecked():
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 inputSource = "pipenv"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 inputFile = os.path.join(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202 self.__defaultDirectory, CycloneDXConfigDialog.Sources["pipenv"]
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 elif self.poetryButton.isChecked():
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 inputSource = "poetry"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 inputFile = os.path.join(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207 self.__defaultDirectory, CycloneDXConfigDialog.Sources["poetry"]
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 elif self.requirementsButton.isChecked():
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 inputSource = "requirements"
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 inputFile = os.path.join(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212 self.__defaultDirectory, CycloneDXConfigDialog.Sources["requirements"]
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 else:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 # should not happen
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 inputSource = None
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 inputFile = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 fileFormat = self.fileFormatComboBox.currentText()
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 schemaVersion = self.schemaVersionComboBox.currentText()
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 sbomFile = self.filePicker.text()
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 if not sbomFile:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 try:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 sbomFile = os.path.join(
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.__defaultDirectory,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
226 CycloneDXConfigDialog.DefaultFileNames[fileFormat],
9117
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 )
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 except KeyError:
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 # should not happen
c6afba2049cf CycloneDX Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 sbomFile = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
232 return (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233 inputSource,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 inputFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 fileFormat,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236 schemaVersion,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237 sbomFile,
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
238 self.vulnerabilityCheckBox.isChecked(),
9122
ddf8ed8f7387 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9119
diff changeset
239 self.dependenciesCheckBox.isChecked(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
240 self.__metadata,
9119
5bcdef5207f6 CycloneDX
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9117
diff changeset
241 )

eric ide

mercurial