From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id 0D0IEt4HW2QZDAAASxT56A (envelope-from ) for ; Wed, 10 May 2023 04:56:30 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id wAoKEt4HW2RPnwAA9RJhRA (envelope-from ) for ; Wed, 10 May 2023 04:56:30 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id E69313C20D for ; Wed, 10 May 2023 04:56:29 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pwZzo-0002Nv-FQ; Tue, 09 May 2023 22:56:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pwZzn-0002NS-NU for bug-guix@gnu.org; Tue, 09 May 2023 22:56:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pwZzn-0002tO-5H for bug-guix@gnu.org; Tue, 09 May 2023 22:56:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pwZzl-0003iE-VC; Tue, 09 May 2023 22:56:01 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#63378: [PATCH v2] teams: Fix script to produce a single X-Debbugs-Cc header. References: <875y92vj2j.fsf@gmail.com> In-Reply-To: <875y92vj2j.fsf@gmail.com> Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: rekado@elephly.net, arunisaac@systemreboot.net, bug-guix@gnu.org Resent-Date: Wed, 10 May 2023 02:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63378 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 63378@debbugs.gnu.org Cc: Maxim Cournoyer , rekado@elephly.net, arunisaac@systemreboot.net X-Debbugs-Original-Xcc: rekado@elephly.net, arunisaac@systemreboot.net Received: via spool by 63378-submit@debbugs.gnu.org id=B63378.168368731714042 (code B ref 63378); Wed, 10 May 2023 02:56:01 +0000 Received: (at 63378) by debbugs.gnu.org; 10 May 2023 02:55:17 +0000 Received: from localhost ([127.0.0.1]:44931 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pwZz2-0003eO-Fv for submit@debbugs.gnu.org; Tue, 09 May 2023 22:55:16 -0400 Received: from mail-qt1-f178.google.com ([209.85.160.178]:44429) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pwZyz-0003dO-2L for 63378@debbugs.gnu.org; Tue, 09 May 2023 22:55:15 -0400 Received: by mail-qt1-f178.google.com with SMTP id d75a77b69052e-3ef59098519so31671741cf.1 for <63378@debbugs.gnu.org>; Tue, 09 May 2023 19:55:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683687307; x=1686279307; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Zp77knkz1XZwBVSxQbZAeDt1Vyp5D7znq1RuOSpnbZ8=; b=fyirFnjzgry9EfoxKEMX+exvSwC3SwQQ9Mj9YnMjnmQubRpHjOl/WILy9GGSsM45u0 5rNO16RkLr6vOO5mUGAUsPWO9/pm4CTNBEWftXO5hVIexgRH/a4z27eS7ssB/cxFwqYN g8qkf7acHC+7AQF9fnUBxYbwk0w8Fvv7ZL9eSlF5HXLThxEpz/SUMYuav4zaPdTmz9WW Q6OIJ9B8DASvGuBmIdZ0NPwUA92qmaSeFD32jWvrmxghm033LzwqxYyO6IL3CAxaHDh+ JP6EOR00Gk8E8ujIobdGimOV43EPVrtGRWQNdmH3UxUZ6DEdywbwe3Ow7ZJAJl/PmLJ4 KVNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683687307; x=1686279307; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Zp77knkz1XZwBVSxQbZAeDt1Vyp5D7znq1RuOSpnbZ8=; b=Q4MMKpzkLgIyAZrtKoPQPiE0cpuZcmtKvt7hwXjmvjGjzHp7ey7a2jWWV6KYa6auZp kgFwhw2ZrnquzmciBNl4ZxMkGGWCoFpOpQueBti8vIvBD1C6CIQj2jMB+J5K+XxATZkA j8a3aBbHSHUQjxxl4nubvJbFvnBAsBRiriz198FC7nex3xoRgE3hhy1OMlVme9cs16Qj 2+JqgdD6oHEJcetDGzHflIb+zRh/MQ/BadE6kDh33jQWIyj1jVOoaWNS9+ERvER1Uln/ tJxyhhRMRLH4uKQXJ/pQmxOkRnprVyZZrk7zFiU1EtZd+BKJE/8MgsAV6gu/AQ2+Qnqm 2S3Q== X-Gm-Message-State: AC+VfDxtUgp4u0ADw477ylxC0ncfpV4mui2SzTgUsD3pDPlekDk9GitF cpGw+0niN7Y8IIfwcP1qPo1GwdiTaCc= X-Google-Smtp-Source: ACHHUZ6HDjurBCmmgAx7Ty4is8GVKFFutYc2Ek8RSF0igg5nfedvRjaVyiCKMF4rEwwK4MP6PeP61Q== X-Received: by 2002:a05:622a:3cc:b0:3eb:13e5:7bd9 with SMTP id k12-20020a05622a03cc00b003eb13e57bd9mr24834270qtx.27.1683687306941; Tue, 09 May 2023 19:55:06 -0700 (PDT) Received: from localhost.localdomain (dsl-156-94.b2b2c.ca. [66.158.156.94]) by smtp.gmail.com with ESMTPSA id cp8-20020a05622a420800b003ef13aa5b0bsm1011113qtb.82.2023.05.09.19.55.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 May 2023 19:55:06 -0700 (PDT) From: Maxim Cournoyer Date: Tue, 9 May 2023 22:55:02 -0400 Message-Id: <21d6e09603863ff5add037ad459131198c699dd6.1683687260.git.maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Seal: i=1; s=key1; d=yhetil.org; t=1683687390; a=rsa-sha256; cv=none; b=GIwnEK4JADfK6QbwiIx3tw3Msq/spT47Vt2yP4VMNxxfPx17Bv712nNjY4QC0r6aAUWsB5 rGk2/NwZtpeyBuadTjcSzzmRhxpZ6hsHsrMAszBX73OSFbk16qytT2CLsezev15WlcEs5S Mcr+7HCAd/O1R8T2jwnuGunloJbZEpM08ofIiOT1BcSeq29sR1z0oqUIfM6KO2MyZuO1Jw /1DuEJTFszo9JegzbT0PSMG+PdNe8ImuB6MxeeJor0n8b87OkpjnqykyPN1YHv6FZix5L6 w5Y389oOYMgdykkH3zwwzfbdpiN3kdcoqnWGgCE8MWE9Sh4vom/DtYynXy2O2Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20221208 header.b=fyirFnjz; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1683687390; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=Zp77knkz1XZwBVSxQbZAeDt1Vyp5D7znq1RuOSpnbZ8=; b=lAHasmFj2fPedmvUlo7b6+ovvKexLvOvldZIkOY2z5+FKy+YQNFwfV6Pu5d12sLfAWOxna HPevd4vQ5l1xKQ/QYoD3Pprf71qNtTLs+KdXQBEd/vucud465m2k00HtqpxZgtTqY5J9S0 GhH/MlU7Wv6epoR1O8SjLf3rdy23YBqduGoAJALvgAvuWOpdifXuf+WuIot2Q53VgmlRpi kgJyvKOy09SSRdaedtp0qjrRwd3YSPr2+HBAhFUcYuD2zwhl/pRZY03FeoGeWnJIHSQ9ol b/Sx6jPuVaJnjFoVUJ6L19b+Y35oq+AuWvetVJO0fBI1ji+hTSSJKS+s6wVMsg== X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20221208 header.b=fyirFnjz; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 7.82 X-Spam-Score: 7.82 X-Migadu-Queue-Id: E69313C20D X-TUID: jUzknCJAa1uE Fixes . * etc/teams.scm.in (cc): Adjust format pattern. (sort-members, member->string): New procedures. (list-members): Refactor in terms of the above procedures. (main): Adjust the output of the 'cc-members-header-cmd' and 'cc-mentors-header-cmd' actions. --- etc/teams.scm.in | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/etc/teams.scm.in b/etc/teams.scm.in index d21f1ff67b..d81ce984f6 100644 --- a/etc/teams.scm.in +++ b/etc/teams.scm.in @@ -605,24 +605,28 @@ (define (find-team-by-scope files) (define (cc . teams) "Return arguments for `git send-email' to notify the members of the given TEAMS when a patch is received by Debbugs." - (format #true - "~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}" - (map person-email - (delete-duplicates (append-map team-members teams) equal?)))) + (let ((members (append-map team-members teams))) + (unless (null? members) + (format #true "--add-header=\"X-Debbugs-Cc: ~{~a~^, ~}\"" + (map person-email (sort-members members)))))) + +(define (sort-members members) + "Deduplicate and sort MEMBERS alphabetically by their name." + (sort (delete-duplicates members equal?) + (lambda (m1 m2) + (stringstring member) + "Return the 'email ' string representation of MEMBER." + (format #false "\"~a\" <~a>" (person-name member) (person-email member))) (define* (list-members team #:optional port (prefix "")) "Print the members of the given TEAM." (define port* (or port (current-output-port))) (for-each (lambda (member) - (format port* - "~a~a <~a>~%" - prefix - (person-name member) - (person-email member))) - (sort - (team-members team) - (lambda (m1 m2) (stringstring member))) + (sort-members (team-members team)))) (define (list-teams) "Print all teams, their scope and their members." @@ -716,13 +720,15 @@ (define (main . args) (apply cc (find-team-by-scope (diff-revisions rev-start rev-end)))) (("cc-members-header-cmd" patch-file) - (for-each (lambda (team-name) - (list-members (find-team team-name) (current-output-port) - "X-Debbugs-Cc: ")) - (patch->teams patch-file))) + (let* ((teams (map find-team (patch->teams patch-file))) + (members (sort-members (append-map team-members teams)))) + (unless (null? members) + (format #true "X-Debbugs-Cc: ~{~a~^, ~}" + (map member->string members))))) (("cc-mentors-header-cmd" patch-file) - (list-members (find-team "mentors") (current-output-port) - "X-Debbugs-Cc: ")) + (format #true "X-Debbugs-Cc: ~{~a~^, ~}" + (map member->string + (sort-members (team-members (find-team "mentors")))))) (("get-maintainer" patch-file) (apply main "list-members" (patch->teams patch-file))) (("list-teams" . args) base-commit: 8f92dfd9ae7ac491ab7fb4b425799a8c909708a8 -- 2.39.2