lib.maintainers: Enforce unique github[Id], email, matrix

This commit is contained in:
Silvan Mosberger 2026-02-09 21:51:01 +01:00
parent 1d6dcd1824
commit b54233e11c

View file

@ -54,6 +54,32 @@ let
missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers);
uniqueFields = [
"github"
"githubId"
"email"
"matrix"
];
nonUniqueFields = lib.filterAttrs (field: nonUnique: nonUnique != { }) (
lib.genAttrs uniqueFields (
field:
lib.pipe lib.maintainers [
(lib.mapAttrsToList (handle: m: m // { inherit handle; }))
(lib.groupBy (m: toString (m.${field} or null)))
(lib.filterAttrs (v: ms: v != "" && lib.length ms > 1))
(lib.mapAttrs (v: ms: map (m: m.handle) ms))
]
)
);
uniquenessError =
value:
if nonUniqueFields == { } then
value
else
throw "lib.maintainers has non-unique fields: ${lib.generators.toPretty { } nonUniqueFields}";
success = pkgs.runCommand "checked-maintainers-success" { } "mkdir $out";
failure =
@ -73,4 +99,4 @@ let
exit 1
'';
in
if missingGithubIds == [ ] then success else failure
uniquenessError (if missingGithubIds == [ ] then success else failure)