@@ -97,44 +97,43 @@ def generate(self, force_regeneration: bool = False) -> None:
97
97
self .generated = True
98
98
99
99
def _specialise_output_for_schema_version (self , bom_json : Dict [Any , Any ]) -> str :
100
- if not self . bom_supports_metadata ():
101
- if 'metadata' in bom_json . keys ():
100
+ if 'metadata' in bom_json . keys ():
101
+ if not self . bom_supports_metadata ():
102
102
del bom_json ['metadata' ]
103
+ else :
104
+ if 'tools' in bom_json ['metadata' ].keys ():
105
+ if not self .bom_metadata_supports_tools ():
106
+ del bom_json ['metadata' ]['tools' ]
107
+ else :
108
+ if not self .bom_metadata_supports_tools_external_references ():
109
+ for _tool in bom_json ['metadata' ]['tools' ]:
110
+ if 'externalReferences' in _tool .keys ():
111
+ del _tool ['externalReferences' ]
112
+ del _tool
113
+ if 'licenses' in bom_json ['metadata' ].keys () and not self .bom_metadata_supports_licenses ():
114
+ del bom_json ['metadata' ]['licenses' ]
115
+ if 'properties' in bom_json ['metadata' ].keys () and not self .bom_metadata_supports_properties ():
116
+ del bom_json ['metadata' ]['properties' ]
117
+
118
+ if self .get_bom ().metadata .component :
119
+ bom_json ['metadata' ] = self ._recurse_specialise_component (bom_json ['metadata' ], 'component' )
120
+
121
+ bom_json = self ._recurse_specialise_component (bom_json )
103
122
104
- if not self .bom_metadata_supports_tools ():
105
- del bom_json ['metadata' ]['tools' ]
106
- elif not self .bom_metadata_supports_tools_external_references ():
107
- for i in range (len (bom_json ['metadata' ]['tools' ])):
108
- if 'externalReferences' in bom_json ['metadata' ]['tools' ][i ].keys ():
109
- del bom_json ['metadata' ]['tools' ][i ]['externalReferences' ]
110
-
111
- if not self .bom_metadata_supports_licenses () and 'licenses' in bom_json ['metadata' ].keys ():
112
- del bom_json ['metadata' ]['licenses' ]
113
-
114
- if not self .bom_metadata_supports_properties () and 'properties' in bom_json ['metadata' ].keys ():
115
- del bom_json ['metadata' ]['properties' ]
116
-
117
- # Iterate Components
118
- if self .get_bom ().metadata .component :
119
- bom_json ['metadata' ] = self ._recurse_specialise_component (bom_json = bom_json ['metadata' ],
120
- base_key = 'component' )
121
- bom_json = self ._recurse_specialise_component (bom_json = bom_json )
122
-
123
- # Iterate Services
124
123
if 'services' in bom_json .keys ():
125
- for i in range ( len ( bom_json ['services' ])) :
126
- if not self . services_supports_properties () and 'properties' in bom_json [ 'services' ][ i ]. keys ():
127
- del bom_json [ 'services' ][ i ] ['properties' ]
128
-
129
- if not self . services_supports_release_notes () and 'releaseNotes' in bom_json [ 'services' ][ i ]. keys ():
130
- del bom_json [ 'services' ][ i ][ 'releaseNotes' ]
124
+ for _service in bom_json ['services' ]:
125
+ if 'properties' in _service . keys () and not self . services_supports_properties ():
126
+ del _service ['properties' ]
127
+ if 'releaseNotes' in _service . keys () and not self . services_supports_release_notes ():
128
+ del _service [ 'releaseNotes' ]
129
+ del _service
131
130
132
- # Iterate externalReferences
133
131
if 'externalReferences' in bom_json .keys ():
134
- for i in range (len (bom_json ['externalReferences' ])):
135
- if not self .external_references_supports_hashes () \
136
- and 'hashes' in bom_json ['externalReferences' ][i ].keys ():
137
- del bom_json ['externalReferences' ][i ]['hashes' ]
132
+ if not self .external_references_supports_hashes ():
133
+ for _externalReference in bom_json ['externalReferences' ]:
134
+ if 'hashes' in _externalReference .keys ():
135
+ del _externalReference ['hashes' ]
136
+ del _externalReference
138
137
139
138
return json .dumps (bom_json )
140
139
0 commit comments