package common import ( "slices" ) type Reviewers struct { Prj []string Pkg []string PrjOptional []string PkgOptional []string } func ParseReviewers(input []string) *Reviewers { r := &Reviewers{} for _, reviewer := range input { pkg := &r.Pkg prj := &r.Prj if reviewer[0] == '~' { pkg = &r.PkgOptional prj = &r.PrjOptional reviewer = reviewer[1:] } switch reviewer[0] { case '*': *prj = append(*prj, reviewer[1:]) *pkg = append(*pkg, reviewer[1:]) case '-': *prj = append(*prj, reviewer[1:]) case '+': *pkg = append(*pkg, reviewer[1:]) default: *pkg = append(*pkg, reviewer) } } if !slices.Contains(r.Prj, Bot_BuildReview) { r.Prj = append(r.Prj, Bot_BuildReview) } return r }