in ci/internal/cli/mitresync.go [152:196]
func filterRecordFiles(files []string) ([]string, error) {
slog.Debug("filtering record files", "files", files)
records := make([]string, 0, len(files))
for _, file := range files {
logger := slog.With("file", file)
if !strings.HasPrefix(filepath.Base(file), "CVE-") {
logger.Debug("excluding file: basename does not start with CVE-")
continue
}
if filepath.Ext(file) != ".json" {
logger.Debug("excluding file: extension is not .json")
continue
}
f, err := os.Open(file)
if err != nil {
return nil, fmt.Errorf("opening record file: %w", err)
}
version, err := cve.RecordVersion(f)
f.Close()
if err != nil {
if errors.Is(err, cve.ErrNotCVERecord) {
logger.Debug("excluding file: does not contain a CVE record")
continue
}
return nil, fmt.Errorf("determining record version in %s: %w", file, err)
}
if !strings.HasPrefix(version, "5.") {
logger.Debug("excluding file: does not contain a v5 CVE record", "version", version)
continue
}
logger.Debug("including file")
records = append(records, file)
}
return records, nil
}