diff --git a/internal/cli/options/options.go b/internal/cli/options/options.go index 53aad589..876bf2f2 100644 --- a/internal/cli/options/options.go +++ b/internal/cli/options/options.go @@ -81,6 +81,7 @@ type OutputOptions struct { OutputFilePath string OutputVersion string UseJSON bool + DisableHTMLEscape bool } func (o *OutputOptions) RegisterFlags(fs *flag.FlagSet) { @@ -98,6 +99,7 @@ func (o *OutputOptions) RegisterFlags(fs *flag.FlagSet) { fs.StringVar(&o.OutputFilePath, "output", "-", "Output file path (or - for STDOUT)") fs.StringVar(&o.OutputVersion, "output-version", cdx.SpecVersion1_6.String(), fmt.Sprintf("Output spec verson (%s)", strings.Join(versionChoices, ", "))) + fs.BoolVar(&o.DisableHTMLEscape, "disable-html-escape", false, "Disable HTML escaping in JSON output") } func (o OutputOptions) Validate() error { diff --git a/internal/cli/util/util.go b/internal/cli/util/util.go index 76830866..333a13ad 100644 --- a/internal/cli/util/util.go +++ b/internal/cli/util/util.go @@ -98,6 +98,10 @@ func WriteBOM(bom *cdx.BOM, outputOptions options.OutputOptions) error { encoder := cdx.NewBOMEncoder(outputWriter, outputFormat) encoder.SetPretty(true) + if(outputOptions.DisableHTMLEscape) { + encoder.SetEscapeHTML(false) + } + if err := encoder.EncodeVersion(bom, outputVersion); err != nil { return fmt.Errorf("failed to encode sbom: %w", err) }