| // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| |
| package saver2v2 |
| |
| import ( |
| "fmt" |
| "io" |
| "sort" |
| |
| "github.com/spdx/tools-golang/spdx" |
| ) |
| |
| func renderFile2_2(f *spdx.File2_2, w io.Writer) error { |
| if f.FileName != "" { |
| fmt.Fprintf(w, "FileName: %s\n", f.FileName) |
| } |
| if f.FileSPDXIdentifier != "" { |
| fmt.Fprintf(w, "SPDXID: %s\n", spdx.RenderElementID(f.FileSPDXIdentifier)) |
| } |
| for _, s := range f.FileType { |
| fmt.Fprintf(w, "FileType: %s\n", s) |
| } |
| if f.FileChecksumSHA1 != "" { |
| fmt.Fprintf(w, "FileChecksum: SHA1: %s\n", f.FileChecksumSHA1) |
| } |
| if f.FileChecksumSHA256 != "" { |
| fmt.Fprintf(w, "FileChecksum: SHA256: %s\n", f.FileChecksumSHA256) |
| } |
| if f.FileChecksumMD5 != "" { |
| fmt.Fprintf(w, "FileChecksum: MD5: %s\n", f.FileChecksumMD5) |
| } |
| if f.LicenseConcluded != "" { |
| fmt.Fprintf(w, "LicenseConcluded: %s\n", f.LicenseConcluded) |
| } |
| for _, s := range f.LicenseInfoInFile { |
| fmt.Fprintf(w, "LicenseInfoInFile: %s\n", s) |
| } |
| if f.LicenseComments != "" { |
| fmt.Fprintf(w, "LicenseComments: %s\n", f.LicenseComments) |
| } |
| if f.FileCopyrightText != "" { |
| fmt.Fprintf(w, "FileCopyrightText: %s\n", textify(f.FileCopyrightText)) |
| } |
| for _, aop := range f.ArtifactOfProjects { |
| fmt.Fprintf(w, "ArtifactOfProjectName: %s\n", aop.Name) |
| if aop.HomePage != "" { |
| fmt.Fprintf(w, "ArtifactOfProjectHomePage: %s\n", aop.HomePage) |
| } |
| if aop.URI != "" { |
| fmt.Fprintf(w, "ArtifactOfProjectURI: %s\n", aop.URI) |
| } |
| } |
| if f.FileComment != "" { |
| fmt.Fprintf(w, "FileComment: %s\n", f.FileComment) |
| } |
| if f.FileNotice != "" { |
| fmt.Fprintf(w, "FileNotice: %s\n", f.FileNotice) |
| } |
| for _, s := range f.FileContributor { |
| fmt.Fprintf(w, "FileContributor: %s\n", s) |
| } |
| for _, s := range f.FileAttributionTexts { |
| fmt.Fprintf(w, "FileAttributionText: %s\n", textify(s)) |
| } |
| for _, s := range f.FileDependencies { |
| fmt.Fprintf(w, "FileDependency: %s\n", s) |
| } |
| |
| fmt.Fprintf(w, "\n") |
| |
| // also render any snippets for this file |
| // get slice of Snippet identifiers so we can sort them |
| snippetKeys := []string{} |
| for k := range f.Snippets { |
| snippetKeys = append(snippetKeys, string(k)) |
| } |
| sort.Strings(snippetKeys) |
| for _, sID := range snippetKeys { |
| s := f.Snippets[spdx.ElementID(sID)] |
| renderSnippet2_2(s, w) |
| } |
| |
| return nil |
| } |