diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2023-08-29 13:53:49 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2023-08-29 14:52:21 -0400 |
commit | ee4a429d4905fbe05f5f642fae6249747b43f0dd (patch) | |
tree | 9ff48eb314ec3990732a765c5edd49c909ceacf6 | |
parent | c0dad02e9f20e59def81bcccd73922d7e2beb88a (diff) | |
download | guix-ee4a429d4905fbe05f5f642fae6249747b43f0dd.tar.gz |
etc: teams: Refactor list-teams.
* etc/teams.scm.in (print-team, sort-teams): New procedures. (list-teams): Use them.
-rw-r--r-- | etc/teams.scm.in | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/etc/teams.scm.in b/etc/teams.scm.in index b017bb3d1a..3630044ca6 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -672,37 +672,41 @@ TEAMS when a patch is received by Debbugs." (format #t "~a~a~%" prefix (member->string member))) (sort-members (team-members team)))) -(define (list-teams) - "Print all teams, their scope and their members." - (define port* (current-output-port)) - (define width* (%text-width)) - (for-each - (lambda (team) - (format port* - "\ +(define (print-team team) + "Print TEAM, a <team> record object." + (format #t + "\ id: ~a name: ~a description: ~a ~amembers: " - (team-id team) - (team-name team) - (or (and=> (team-description team) - (lambda (text) - (string->recutils - (fill-paragraph text width* - (string-length "description: "))))) - "<none>") - (match (team-scope team) - (() "") - (scope (format #f "scope: ~{~s ~}~%" scope)))) - (list-members team #:prefix "+ ") - (newline)) - (sort - (hash-map->list (lambda (key value) value) %teams) - (lambda (team1 team2) - (string<? (symbol->string (team-id team1)) - (symbol->string (team-id team2))))))) + (team-id team) + (team-name team) + (or (and=> (team-description team) + (lambda (text) + (string->recutils + (fill-paragraph text (%text-width) + (string-length "description: "))))) + "<none>") + (match (team-scope team) + (() "") + (scope (format #f "scope: ~{~s ~}~%" scope)))) + (list-members team #:prefix "+ ") + (newline))) + +(define (sort-teams teams) + "Sort TEAMS, a list of <team> record objects." + (sort teams + (lambda (team1 team2) + (string<? (symbol->string (team-id team1)) + (symbol->string (team-id team2)))))) + +(define* (list-teams) + "Print all teams, their scope and their members." + (for-each print-team + (sort-teams (hash-map->list + (lambda (_ value) value) %teams)))) (define (diff-revisions rev-start rev-end) |