teams: Allow a patch-file argument to cc-members.

* etc/teams.scm.in (git-patch->revisions): New procedure.
(main) [cc-members]: New match pattern to support patch file argument.
[get-maintainer]: Simplify using the newly introduced procedure from above.
(main): Update usage doc.

Series-changes: 2
- New: support passing a patch file to the cc-members command
This commit is contained in:
Maxim Cournoyer 2022-12-27 09:57:56 -05:00
parent 4f5ea195ff
commit a6b98cdc07
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
1 changed files with 24 additions and 10 deletions

View File

@ -634,20 +634,29 @@ and REV-END, two git revision strings."
(error "invalid patch file:" file))
(match:substring m 1)))))
(define (git-patch->revisions file)
"Return the start and end revisions of FILE, a patch file produced with git."
(let* ((rev-end (git-patch->commit-id file))
(rev-start (string-append rev-end "^")))
(list rev-start rev-end)))
(define (main . args)
(match args
(("cc" . team-names)
(apply cc (map find-team team-names)))
(("cc-members" patch-file)
(unless (file-exists? patch-file)
(error "patch file does not exist:" patch-file))
(apply main "cc-members" (git-patch->revisions patch-file)))
(("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))))))
(apply main "list-members"
(map (compose symbol->string team-id)
(find-team-by-scope (apply diff-revisions
(git-patch->revisions patch-file))))))
(("list-teams" . args)
(list-teams))
(("list-members" . team-names)
@ -660,10 +669,15 @@ and REV-END, two git revision strings."
"Usage: etc/teams.scm <command> [<args>]
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>
get-maintainer <patch> compatibility mode with Linux get_maintainer.pl~%"))))
cc <team-name>
get git send-email flags for cc-ing <team-name>
cc-members <start> <end> | patch
cc teams related to files changed between revisions or in a patch file
list-teams
list teams and their members
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)))