util/scripts/maintainers.go: Add Gerrit reviewers config emitter

The gerrit reviewers plugin has a certain configuration format. Teach
maintainers to emit it when called with -print-gerrit-rules.

Change-Id: I92cfc905e0c1b03b7cf793a4324c392140a22060
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/29607
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Patrick Georgi 2018-11-12 18:49:09 +01:00
parent 62a27385fd
commit e874df9e0b
1 changed files with 38 additions and 3 deletions

View File

@ -258,10 +258,40 @@ func glob_to_regex(glob string) string {
return "^" + regex + "$"
}
var is_email *regexp.Regexp
func extract_maintainer(maintainer string) string {
if is_email == nil {
is_email = regexp.MustCompile("<[^>]*>")
}
if match := is_email.FindStringSubmatch(maintainer); match != nil {
return match[0][1 : len(match[0])-1]
}
return maintainer
}
func do_print_gerrit_rules() {
for _, subsystem := range subsystems {
if len(subsystem.paths) == 0 || len(subsystem.maintainer) == 0 {
continue
}
fmt.Println("#", subsystem.name)
for _, path := range subsystem.paths {
fmt.Println("[filter \"file:" + path_to_regexstr(path) + "\"]")
for _, maint := range subsystem.maintainer {
fmt.Println(" reviewer =", extract_maintainer(maint))
}
}
fmt.Println()
}
}
func main() {
var (
files []string
err error
print_gerrit_rules = flag.Bool("print-gerrit-rules", false, "emit the MAINTAINERS rules in a format suitable for Gerrit's reviewers plugin")
debug = flag.Bool("debug", false, "emit additional debug output")
)
flag.Parse()
@ -278,6 +308,11 @@ func main() {
print_maintainers()
}
if *print_gerrit_rules {
do_print_gerrit_rules()
return
}
args := flag.Args()
if len(args) == 0 {
/* get the filenames */