diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-12-19 16:17:10 -0500 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-12-28 15:21:10 -0500 |
commit | 4f5ea195ffd2cb97b80a706c231d998304cecafc (patch) | |
tree | 85897171d788c2e70b0215893b2350536499f7ec /etc/teams.scm.in | |
parent | bbada5967d791776c7f6a81e272a0e6a67d216bb (diff) | |
download | guix-4f5ea195ffd2cb97b80a706c231d998304cecafc.tar.gz |
teams: Add a "get-maintainer" command.
This can be used as a compatibility mode with the get_maintainer.pl Perl script included in the Linux (or U-Boot) source tree. * etc/teams.scm.in (git-patch->commit-id): New procedure. (main) <get-maintainer>: Register new command. Document it. Series-changes: 2 - Move newline character (~%) in usage output to the bottom
Diffstat (limited to 'etc/teams.scm.in')
-rw-r--r-- | etc/teams.scm.in | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/etc/teams.scm.in b/etc/teams.scm.in index f42a7f6f28..e50efea786 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -5,6 +5,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,6 +35,7 @@ (ice-9 format) (ice-9 regex) (ice-9 match) + (ice-9 rdelim) (guix ui) (git)) @@ -623,6 +625,15 @@ and REV-END, two git revision strings." (const 0)) files)) +(define (git-patch->commit-id file) + "Parse the commit ID from the first line of FILE, a patch produced with git." + (call-with-input-file file + (lambda (port) + (let ((m (string-match "^From ([0-9a-f]{40})" (read-line port)))) + (unless m + (error "invalid patch file:" file)) + (match:substring m 1))))) + (define (main . args) (match args @@ -631,6 +642,12 @@ and REV-END, two git revision strings." (("cc-members" rev-start rev-end) (apply cc (find-team-by-scope (diff-revisions rev-start rev-end)))) + (("get-maintainer" patch-file) + (let* ((rev-end (git-patch->commit-id patch-file)) + (rev-start (string-append rev-end "^"))) + (apply main "list-members" + (map (compose symbol->string team-id) + (find-team-by-scope (diff-revisions rev-start rev-end)))))) (("list-teams" . args) (list-teams)) (("list-members" . team-names) @@ -646,6 +663,7 @@ Commands: cc <team-name> get git send-email flags for cc-ing <team-name> cc-members <start> <end> cc teams related to files changed between revisions list-teams list teams and their members - list-members <team-name> list members belonging to <team-name>~%")))) + list-members <team-name> list members belonging to <team-name> + get-maintainer <patch> compatibility mode with Linux get_maintainer.pl~%")))) (apply main (cdr (command-line))) |