Skip to content

Commit b3333aa

Browse files
committed
sbom: remove merge command
no longer used
1 parent 7459bff commit b3333aa

File tree

1 file changed

+1
-74
lines changed

1 file changed

+1
-74
lines changed

msys2_devtools/sbom.py

Lines changed: 1 addition & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from .srcinfo import parse_srcinfo
1616
from .pkgextra import extra_to_pkgextra_entry
17-
from .cpe import parse_cpe, build_cpe22, normalize_cpe
17+
from .cpe import parse_cpe, build_cpe22
1818

1919

2020
def extract_upstream_version(version: str) -> str:
@@ -161,62 +161,6 @@ def include_unaffected_from_grype(grype_data: dict, target_bom: Bom) -> None:
161161
target.versions = target_versions
162162

163163

164-
def handle_merge_command(args) -> None:
165-
"""Merge component properties from the source SBOM into a target SBOM.
166-
167-
Components are matched by name, version, purl, and CPE (normalized).
168-
"""
169-
170-
logging.basicConfig(level="INFO")
171-
172-
with open(args.src_sbom, "r", encoding="utf-8") as h:
173-
src_bom: Bom = Bom.from_json(json.loads(h.read()))
174-
175-
properties = {}
176-
177-
def get_component_key(component: Component) -> str:
178-
cpe_key = None
179-
if component.cpe is not None:
180-
cpe_key = normalize_cpe(component.cpe)
181-
return (component.name, component.version, component.purl, cpe_key)
182-
183-
for component in src_bom.components:
184-
assert isinstance(component, Component)
185-
key = get_component_key(component)
186-
if key not in properties:
187-
properties[key] = component.properties
188-
else:
189-
properties[key].update(component.properties)
190-
191-
with open(args.target_sbom, "r", encoding="utf-8") as h:
192-
target_bom: Bom = Bom.from_json(json.loads(h.read()))
193-
194-
if args.grype_json is not None:
195-
with open(args.grype_json, "r", encoding="utf-8") as h:
196-
grype_data = json.loads(h.read())
197-
include_unaffected_from_grype(grype_data, target_bom)
198-
199-
done = set()
200-
for component in target_bom.components:
201-
key = get_component_key(component)
202-
if key in done:
203-
continue
204-
if key not in properties:
205-
raise ValueError(f"Component not found in source SBOM: {key}")
206-
for src_prop in properties.get(key, []):
207-
for prop in component.properties:
208-
if prop.name == src_prop.name and prop.value == src_prop.value:
209-
break
210-
else:
211-
component.properties.add(src_prop)
212-
done.add(key)
213-
214-
my_json_outputter: 'JsonOutputter' = JsonV1Dot5(target_bom)
215-
serialized_json = my_json_outputter.output_as_string(indent=2)
216-
with open(args.target_sbom, 'w', encoding="utf-8") as file:
217-
file.write(serialized_json)
218-
219-
220164
def handle_fixup_command(args) -> None:
221165
"""Adjust the target SBOM by rewriting component properties and
222166
adding unaffected versions from a grype json file."""
@@ -252,22 +196,6 @@ def handle_fixup_command(args) -> None:
252196
file.write(serialized_json)
253197

254198

255-
def add_merge_subcommand(subparsers) -> None:
256-
parser = subparsers.add_parser(
257-
"merge",
258-
description="Merge component properties from the source SBOM into a target SBOM",
259-
allow_abbrev=False
260-
)
261-
parser.add_argument("src_sbom", help="The source SBOM")
262-
parser.add_argument("target_sbom", help="The target SBOM")
263-
parser.add_argument(
264-
"--grype-json",
265-
help="Include additional info from a grype json file, like fixed versions",
266-
default=None
267-
)
268-
parser.set_defaults(func=handle_merge_command)
269-
270-
271199
def add_fixup_subcommand(subparsers) -> None:
272200
parser = subparsers.add_parser(
273201
"fixup",
@@ -289,7 +217,6 @@ def main(argv: list[str]) -> None:
289217
subparsers = parser.add_subparsers(dest="command", required=True)
290218

291219
add_create_subcommand(subparsers)
292-
add_merge_subcommand(subparsers)
293220
add_fixup_subcommand(subparsers)
294221

295222
args = parser.parse_args(argv[1:])

0 commit comments

Comments
 (0)