From ee4a429d4905fbe05f5f642fae6249747b43f0dd Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 29 Aug 2023 13:53:49 -0400 Subject: etc: teams: Refactor list-teams. * etc/teams.scm.in (print-team, sort-teams): New procedures. (list-teams): Use them. --- etc/teams.scm.in | 56 ++++++++++++++++++++++++++++++-------------------------- 1 file 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 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: "))))) - "") - (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) - (stringstring (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: "))))) + "") + (match (team-scope team) + (() "") + (scope (format #f "scope: ~{~s ~}~%" scope)))) + (list-members team #:prefix "+ ") + (newline))) + +(define (sort-teams teams) + "Sort TEAMS, a list of record objects." + (sort teams + (lambda (team1 team2) + (stringstring (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) -- cgit v1.2.3