summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-29 13:53:49 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-29 14:52:21 -0400
commitee4a429d4905fbe05f5f642fae6249747b43f0dd (patch)
tree9ff48eb314ec3990732a765c5edd49c909ceacf6
parentc0dad02e9f20e59def81bcccd73922d7e2beb88a (diff)
downloadguix-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.in56
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)