1# SPDX-License-Identifier: Apache-2.0
2# Copyright (c) 2022 spdx contributors
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6# http://www.apache.org/licenses/LICENSE-2.0
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS,
9# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10# See the License for the specific language governing permissions and
11# limitations under the License.
12from beartype.typing import TextIO
13
14from spdx_tools.spdx.model import File
15from spdx_tools.spdx.writer.tagvalue.checksum_writer import write_checksum_to_tag_value
16from spdx_tools.spdx.writer.tagvalue.tagvalue_writer_helper_functions import write_text_value, write_value
17
18
19def write_file(file: File, text_output: TextIO):
20 text_output.write("## File Information\n")
21
22 write_value("FileName", file.name, text_output)
23 write_value("SPDXID", file.spdx_id, text_output)
24
25 for file_type in file.file_types:
26 write_value("FileType", file_type.name, text_output)
27
28 for file_checksum in file.checksums:
29 write_value("FileChecksum", write_checksum_to_tag_value(file_checksum), text_output)
30
31 write_value("LicenseConcluded", file.license_concluded, text_output)
32 for license_info in file.license_info_in_file:
33 write_value("LicenseInfoInFile", license_info, text_output)
34 write_text_value("LicenseComments", file.license_comment, text_output)
35 write_text_value("FileCopyrightText", file.copyright_text, text_output)
36
37 write_text_value("FileComment", file.comment, text_output)
38 write_text_value("FileNotice", file.notice, text_output)
39
40 for contributor in sorted(file.contributors):
41 write_value("FileContributor", contributor, text_output)
42
43 for attribution_text in file.attribution_texts:
44 write_text_value("FileAttributionText", attribution_text, text_output)