xref: /linux/scripts/sbom/sbom.py (revision 3fd79200835f382261a7b53fed659625b22484af)
1#!/usr/bin/env python3
2# SPDX-License-Identifier: GPL-2.0-only OR MIT
3# Copyright (C) 2025 TNG Technology Consulting GmbH
4
5"""
6Compute software bill of materials in SPDX format describing a kernel build.
7"""
8
9import logging
10import sys
11import sbom.sbom_logging as sbom_logging
12from sbom.config import get_config
13
14
15def _exit_with_summary(write_output_on_error: bool = False) -> None:
16    warning_summary = sbom_logging.summarize_warnings()
17    error_summary = sbom_logging.summarize_errors()
18    if warning_summary:
19        logging.warning(warning_summary)
20    if error_summary:
21        logging.error(error_summary)
22        sys.exit(1)
23
24
25def main():
26    # Read config
27    config = get_config()
28
29    # Configure logging
30    logging.basicConfig(
31        level=logging.DEBUG if config.debug else logging.INFO,
32        format="[%(levelname)s] %(message)s",
33    )
34
35    _exit_with_summary(config.write_output_on_error)
36
37
38# Call main method
39if __name__ == "__main__":
40    main()
41