Commit b54233e1 authored by Silvan Mosberger's avatar Silvan Mosberger
Browse files

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

parent 1d6dcd18
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -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)