forked from adamm/autogits
46 lines
742 B
Go
46 lines
742 B
Go
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
|
|
}
|