etc: teams: Refactor list-teams.

* etc/teams.scm.in (print-team, sort-teams): New procedures.
(list-teams): Use them.
This commit is contained in:
Maxim Cournoyer 2023-08-29 13:53:49 -04:00
parent c0dad02e9f
commit ee4a429d49
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -672,37 +672,41 @@ (define* (list-members team #:key (prefix ""))
(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)