blob: 91f82a88d9e0674deaaa0941f5bd68e911779c47 [file] [log] [blame]
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"context"
"golang.org/x/vulndb/cmd/vulnreport/log"
"golang.org/x/vulndb/internal/database"
"golang.org/x/vulndb/internal/report"
)
type cveCmd struct{ filenameParser }
func (cveCmd) name() string { return "cve" }
func (cveCmd) usage() (string, string) {
const desc = "creates and saves CVE 5.0 record from the provided YAML reports"
return filenameArgs, desc
}
func (c *cveCmd) setup(ctx context.Context) error {
return nil
}
func (c *cveCmd) close() error { return nil }
func (c *cveCmd) run(ctx context.Context, filename string) (err error) {
r, err := report.Read(filename)
if err != nil {
return err
}
if r.CVEMetadata != nil {
if err := writeCVE(r); err != nil {
return err
}
log.Out(r.CVEFilename())
}
return nil
}
// writeCVE converts a report to JSON CVE5 record and writes it to
// data/cve/v5.
func writeCVE(r *report.Report) error {
cve, err := r.ToCVE5()
if err != nil {
return err
}
return database.WriteJSON(r.CVEFilename(), cve, true)
}