func filter()

in cmd/redhat_filter/main.go [62:98]


func filter(chk rpm.Checker, cfg *config, r io.Reader, w io.Writer) error {
	cr := csv.NewReader(r)
	cw := csv.NewWriter(w)

	for {
		// read
		row, err := cr.Read()
		if err == io.EOF {
			return nil
		}
		if err != nil {
			return err
		}

		// check indexes
		if err := cfg.checkIndexes(len(row)); err != nil {
			return err
		}

		// filter
		pkgs := strings.Split(row[cfg.pkgs], cfg.pkgsSep)
		filtered, err := rpm.FilterFixedPackages(chk, pkgs, row[cfg.distro], row[cfg.cve])
		if err != nil {
			return fmt.Errorf("failed to filter packages: %v", err)
		}
		row[cfg.pkgs] = strings.Join(filtered, cfg.pkgsSep)

		// write
		if err := cw.Write(row); err != nil {
			return err
		}
		cw.Flush()
		if err := cw.Error(); err != nil {
			return err
		}
	}
}