func Import()

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)
}