internal/print/print.go (40 lines of code) (raw):
package print
import (
"fmt"
"strings"
obom "github.com/Azure/obom/pkg"
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/spdx/tools-golang/spdx/v2/v2_3"
)
func PrintCreatorInfo(doc *v2_3.Document) {
size := len(doc.CreationInfo.Creators)
if size == 1 {
creator := doc.CreationInfo.Creators[0]
fmt.Printf("Creator: %s\n", creator.Creator)
} else if size > 1 {
firstItem := doc.CreationInfo.Creators[0]
fmt.Printf("Creators: %s\n", firstItem.Creator)
for _, creator := range doc.CreationInfo.Creators[1:] {
fmt.Printf(" %s\n", creator.Creator)
}
}
}
// PrintSBOMSummary returns the SPDX summary from the SBOM
func PrintSBOMSummary(sbomDoc *obom.SPDXDocument, desc *ocispec.Descriptor) {
doc := sbomDoc.Document
fmt.Println(strings.Repeat("=", 80))
fmt.Printf("Document Name: %s\n", doc.DocumentName)
fmt.Printf("Document Namespace: %s\n", doc.DocumentNamespace)
fmt.Printf("SPDX Version: %s\n", sbomDoc.Version)
if doc.CreationInfo != nil {
fmt.Printf("Creation Date: %s\n", doc.CreationInfo.Created)
PrintCreatorInfo(doc)
}
if doc.Packages != nil {
fmt.Printf("Packages: %d\n", len(doc.Packages))
}
if doc.Files != nil {
fmt.Printf("Files: %d\n", len(doc.Files))
}
fmt.Printf("Digest: %s\n", desc.Digest)
fmt.Println(strings.Repeat("=", 80))
}