[bug#78568,2/5] teams: Use suitable team identifiers for Codeberg.

Message ID f731fe6cd2b0632b34da33772b6c2a707db548b3.1748029404.git.ludo@gnu.org
State New
Headers
Series Synchronize team definitions with Codeberg |

Commit Message

Ludovic Courtès May 23, 2025, 7:55 p.m. UTC
  The “c++” team has to be called “cpp”.

* etc/teams.scm (team-id->forgejo-id): New procedure.
(team->codeowners-snippet): Use it.

Change-Id: I10619d8833b5c747504f26b7b0eedb9d61bfd812
---
 etc/teams.scm | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
  

Patch

diff --git a/etc/teams.scm b/etc/teams.scm
index a57d132787..9fa189a92c 100755
--- a/etc/teams.scm
+++ b/etc/teams.scm
@@ -1024,13 +1024,27 @@  (define (patch->teams patch-file)
        (find-team-by-scope (apply diff-revisions
                                   (git-patch->revisions patch-file)))))
 
+(define (team-id->forgejo-id id)
+  "Return a name (string) suitable as a Forgejo team name."
+  (define valid                                   ;"AlphaDashDot"
+    (char-set-union char-set:ascii (char-set #\-) (char-set #\.)))
+
+  (define (valid? chr)
+    (char-set-contains? valid chr))
+
+  (string-map (match-lambda
+                (#\+ #\p)                         ;special case for "c++"
+                ((? valid? chr) chr)
+                (_ #\-))
+              (symbol->string id)))
+
 (define (team->codeowners-snippet team)
   (string-join (map (lambda (scope)
                       (format #f "~50a @guix/~a"
                               (if (regexp*? scope)
                                   (regexp*-pattern scope)
                                   (regexp-quote scope))
-                              (team-id team)))
+                              (team-id->forgejo-id (team-id team))))
                     (team-scope team))
                "\n"
                'suffix))