1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage saver2v1 4*ba677afaSXin Li 5*ba677afaSXin Liimport ( 6*ba677afaSXin Li "fmt" 7*ba677afaSXin Li "io" 8*ba677afaSXin Li "sort" 9*ba677afaSXin Li 10*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/common" 11*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_1" 12*ba677afaSXin Li) 13*ba677afaSXin Li 14*ba677afaSXin Lifunc renderFile2_1(f *v2_1.File, w io.Writer) error { 15*ba677afaSXin Li if f.FileName != "" { 16*ba677afaSXin Li fmt.Fprintf(w, "FileName: %s\n", f.FileName) 17*ba677afaSXin Li } 18*ba677afaSXin Li if f.FileSPDXIdentifier != "" { 19*ba677afaSXin Li fmt.Fprintf(w, "SPDXID: %s\n", common.RenderElementID(f.FileSPDXIdentifier)) 20*ba677afaSXin Li } 21*ba677afaSXin Li for _, s := range f.FileTypes { 22*ba677afaSXin Li fmt.Fprintf(w, "FileType: %s\n", s) 23*ba677afaSXin Li } 24*ba677afaSXin Li 25*ba677afaSXin Li for _, checksum := range f.Checksums { 26*ba677afaSXin Li fmt.Fprintf(w, "FileChecksum: %s: %s\n", checksum.Algorithm, checksum.Value) 27*ba677afaSXin Li } 28*ba677afaSXin Li if f.LicenseConcluded != "" { 29*ba677afaSXin Li fmt.Fprintf(w, "LicenseConcluded: %s\n", f.LicenseConcluded) 30*ba677afaSXin Li } 31*ba677afaSXin Li for _, s := range f.LicenseInfoInFiles { 32*ba677afaSXin Li fmt.Fprintf(w, "LicenseInfoInFile: %s\n", s) 33*ba677afaSXin Li } 34*ba677afaSXin Li if f.LicenseComments != "" { 35*ba677afaSXin Li fmt.Fprintf(w, "LicenseComments: %s\n", textify(f.LicenseComments)) 36*ba677afaSXin Li } 37*ba677afaSXin Li if f.FileCopyrightText != "" { 38*ba677afaSXin Li fmt.Fprintf(w, "FileCopyrightText: %s\n", textify(f.FileCopyrightText)) 39*ba677afaSXin Li } 40*ba677afaSXin Li for _, aop := range f.ArtifactOfProjects { 41*ba677afaSXin Li fmt.Fprintf(w, "ArtifactOfProjectName: %s\n", aop.Name) 42*ba677afaSXin Li if aop.HomePage != "" { 43*ba677afaSXin Li fmt.Fprintf(w, "ArtifactOfProjectHomePage: %s\n", aop.HomePage) 44*ba677afaSXin Li } 45*ba677afaSXin Li if aop.URI != "" { 46*ba677afaSXin Li fmt.Fprintf(w, "ArtifactOfProjectURI: %s\n", aop.URI) 47*ba677afaSXin Li } 48*ba677afaSXin Li } 49*ba677afaSXin Li if f.FileComment != "" { 50*ba677afaSXin Li fmt.Fprintf(w, "FileComment: %s\n", textify(f.FileComment)) 51*ba677afaSXin Li } 52*ba677afaSXin Li if f.FileNotice != "" { 53*ba677afaSXin Li fmt.Fprintf(w, "FileNotice: %s\n", textify(f.FileNotice)) 54*ba677afaSXin Li } 55*ba677afaSXin Li for _, s := range f.FileContributors { 56*ba677afaSXin Li fmt.Fprintf(w, "FileContributor: %s\n", s) 57*ba677afaSXin Li } 58*ba677afaSXin Li for _, s := range f.FileDependencies { 59*ba677afaSXin Li fmt.Fprintf(w, "FileDependency: %s\n", s) 60*ba677afaSXin Li } 61*ba677afaSXin Li 62*ba677afaSXin Li fmt.Fprintf(w, "\n") 63*ba677afaSXin Li 64*ba677afaSXin Li // also render any snippets for this file 65*ba677afaSXin Li // get slice of Snippet identifiers so we can sort them 66*ba677afaSXin Li snippetKeys := []string{} 67*ba677afaSXin Li for k := range f.Snippets { 68*ba677afaSXin Li snippetKeys = append(snippetKeys, string(k)) 69*ba677afaSXin Li } 70*ba677afaSXin Li sort.Strings(snippetKeys) 71*ba677afaSXin Li for _, sID := range snippetKeys { 72*ba677afaSXin Li s := f.Snippets[common.ElementID(sID)] 73*ba677afaSXin Li renderSnippet2_1(s, w) 74*ba677afaSXin Li } 75*ba677afaSXin Li 76*ba677afaSXin Li return nil 77*ba677afaSXin Li} 78