diff --git a/pkg/flag/report_flags.go b/pkg/flag/report_flags.go index de5f9a3226e0..9747d4816751 100644 --- a/pkg/flag/report_flags.go +++ b/pkg/flag/report_flags.go @@ -26,7 +26,7 @@ var ( ConfigName: "format", Shorthand: "f", Value: report.FormatTable, - Usage: "format (table, json, sarif, template, cyclonedx, spdx, spdx-json, github, cosign-vuln)", + Usage: "format (" + strings.Join(report.SupportedFormats, ", ") + ")", } ReportFormatFlag = Flag{ Name: "report", @@ -155,6 +155,10 @@ func (f *ReportFlagGroup) ToOptions(out io.Writer) (ReportOptions, error) { listAllPkgs := getBool(f.ListAllPkgs) output := getString(f.Output) + if format != "" && !slices.Contains(report.SupportedFormats, format) { + return ReportOptions{}, xerrors.Errorf("unknown format: %v", format) + } + if template != "" { if format == "" { log.Logger.Warn("'--template' is ignored because '--format template' is not specified. Use '--template' option with '--format template' option.") diff --git a/pkg/report/writer.go b/pkg/report/writer.go index 2f727ada71a2..6bc0a7881bad 100644 --- a/pkg/report/writer.go +++ b/pkg/report/writer.go @@ -32,6 +32,10 @@ const ( FormatCosignVuln = "cosign-vuln" ) +var ( + SupportedFormats = []string{FormatTable, FormatJSON, FormatTemplate, FormatSarif, FormatCycloneDX, FormatSPDX, FormatSPDXJSON, FormatGitHub, FormatCosignVuln} +) + var ( SupportedSBOMFormats = []string{FormatCycloneDX, FormatSPDX, FormatSPDXJSON, FormatGitHub} )