Source code for reuse.spdx

# SPDX-FileCopyrightText: 2017 Free Software Foundation Europe e.V. <https://fsfe.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""Compilation of the SPDX Document."""

import contextlib
import logging
import sys
from gettext import gettext as _

from ._util import PathType
from .project import Project
from .report import ProjectReport

_LOGGER = logging.getLogger(__name__)


[docs]def add_arguments(parser) -> None: """Add arguments to the parser.""" parser.add_argument( "--output", "-o", dest="file", action="store", type=PathType("w") )
[docs]def run(args, project: Project, out=sys.stdout) -> int: """Print the project's bill of materials.""" if args.file: out = args.file.open("w", encoding="UTF-8") if args.file.suffix != ".spdx": _LOGGER.warning( _("'{path}' does not end with .spdx").format(path=out.name) ) report = ProjectReport.generate( project, multiprocessing=not args.no_multiprocessing ) out.write(report.bill_of_materials()) # Don't close sys.stdout or StringIO if args.file: with contextlib.suppress(Exception): out.close() return 0