in pkg/vul/import.go [35:77]
func Import(ctx context.Context, options types.Options) error {
opt, ok := options.(*types.VulnerabilityOptions)
if !ok || opt == nil {
return errors.New("valid options required")
}
if err := options.Validate(); err != nil {
return errors.Wrap(err, "error validating options")
}
resourceURL, err := container.GetFullURL(opt.Source)
if err != nil {
return errors.Wrap(err, "error getting full url")
}
log.Info().Msgf("Resource URL: %s", resourceURL)
opt.Source = resourceURL
s, err := utils.NewFileSource(opt.Project, opt.File, opt.Source)
if err != nil {
return errors.Wrap(err, "error creating source")
}
converter, err := convert.GetConverter(s.Format)
if err != nil {
return errors.Wrap(err, "error getting converter")
}
noteOccurrencesMap, err := converter(s)
if err != nil {
return errors.Wrap(err, "error converting source")
}
// TODO: Debug code
//_ = deleteNoteOccurrences(ctx, opt, noteOccurrencesMap)
log.Info().Msgf("found %d vulnerabilities", len(noteOccurrencesMap))
if err := post(ctx, noteOccurrencesMap, opt); err != nil {
return err
}
// Create/Update discovery occurrence.
return updateDiscoveryNoteAndOcc(ctx, opt.Project, opt.Source)
}