Files
trivy/pkg/k8s/writer.go
2024-05-02 11:08:59 +00:00

53 lines
1.4 KiB
Go

package k8s
import (
"context"
"fmt"
cdx "github.com/CycloneDX/cyclonedx-go"
"github.com/aquasecurity/trivy/pkg/k8s/report"
"github.com/aquasecurity/trivy/pkg/report/table"
"github.com/aquasecurity/trivy/pkg/types"
)
// Write writes the results in the give format
func Write(ctx context.Context, k8sreport report.Report, option report.Option) error {
k8sreport.PrintErrors()
switch option.Format {
case types.FormatJSON:
jwriter := report.JSONWriter{
Output: option.Output,
Report: option.Report,
}
return jwriter.Write(k8sreport)
case types.FormatTable:
separatedReports := report.SeparateMisconfigReports(k8sreport, option.Scanners)
if option.Report == report.SummaryReport {
target := fmt.Sprintf("Summary Report for %s", k8sreport.ClusterName)
table.RenderTarget(option.Output, target, table.IsOutputToTerminal(option.Output))
}
for _, r := range separatedReports {
writer := &report.TableWriter{
Output: option.Output,
Report: option.Report,
Severities: option.Severities,
ColumnHeading: report.ColumnHeading(option.Scanners, r.Columns),
}
if err := writer.Write(ctx, r.Report); err != nil {
return err
}
}
return nil
case types.FormatCycloneDX:
w := report.NewCycloneDXWriter(option.Output, cdx.BOMFileFormatJSON, option.APIVersion)
return w.Write(ctx, k8sreport.BOM)
}
return nil
}