fix(releases): check for duplicate tags (#681)

* fix(releases): don't store duplicate tags

* Update release.go
This commit is contained in:
Kyle Sanderson 2023-01-29 06:50:27 -08:00 committed by GitHub
parent 2d2ddb45bd
commit 6e85ec52e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -233,8 +233,29 @@ func (r *Release) ParseReleaseTagsString(tags string) {
t := ParseReleaseTagString(cleanTags) t := ParseReleaseTagString(cleanTags)
f := func(target *[]string, source []string) {
toappend := make([]string, 0, len(source))
for _, t := range *target {
found := false
norm := rls.MustNormalize(t)
for _, s := range source {
if rls.MustNormalize(s) == norm {
found = true
break
}
}
if !found {
toappend = append(toappend, t)
}
}
*target = append(*target, toappend...)
}
if len(t.Audio) > 0 { if len(t.Audio) > 0 {
r.Audio = append(r.Audio, t.Audio...) f(&r.Audio, t.Audio)
} }
if len(t.Bonus) > 0 { if len(t.Bonus) > 0 {
if sliceContainsSlice([]string{"Freeleech"}, t.Bonus) { if sliceContainsSlice([]string{"Freeleech"}, t.Bonus) {
@ -245,10 +266,10 @@ func (r *Release) ParseReleaseTagsString(tags string) {
r.Bonus = append(r.Bonus, t.Bonus...) r.Bonus = append(r.Bonus, t.Bonus...)
} }
if len(t.Codec) > 0 { if len(t.Codec) > 0 {
r.Codec = append(r.Codec, t.Codec) f(&r.Codec, append(make([]string, 0, 1), t.Codec))
} }
if len(t.Other) > 0 { if len(t.Other) > 0 {
r.Other = append(r.Other, t.Other...) f(&r.Other, t.Other)
} }
if r.Origin == "" && t.Origin != "" { if r.Origin == "" && t.Origin != "" {
r.Origin = t.Origin r.Origin = t.Origin