Commit 5991eab9 authored by Silvan Mosberger's avatar Silvan Mosberger
Browse files

modules/generic/meta-maintainers.nix: Introduce meta.teams

And trigger review requests for it
parent b486dfb1
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -14,12 +14,15 @@ let
  };

  nixpkgsRoot = toString ../../.. + "/";
  stripNixpkgsRootFromKeys = lib.mapAttrs' (
    file: value: lib.nameValuePair (lib.removePrefix nixpkgsRoot file) value
  );

  moduleMeta = (pkgs.nixos { }).config.meta;

  fileMaintainers =
  # Currently just nixos module maintainers, but in the future we can use this for code owners too
    lib.mapAttrs' (
      file: maintainers: lib.nameValuePair (lib.removePrefix nixpkgsRoot file) maintainers
    ) (pkgs.nixos { }).config.meta.maintainers;
  fileMaintainers = stripNixpkgsRootFromKeys moduleMeta.maintainers;
  fileTeams = stripNixpkgsRootFromKeys moduleMeta.teams;

  changedpaths = lib.importJSON changedpathsjson;

@@ -127,7 +130,11 @@ let
      pkg:
      userPings { attr = pkg.name; } pkg.users ++ lib.concatMap (teamPings { pkg = pkg.name; }) pkg.teams
    ) attrsWithModifiedFiles
    ++ lib.concatMap (path: userPings { file = path; } (fileMaintainers.${path} or [ ])) changedpaths;
    ++ lib.concatMap (
      path:
      userPings { file = path; } (fileMaintainers.${path} or [ ])
      ++ lib.concatMap (teamPings { file = path; }) (fileTeams.${path} or [ ])
    ) changedpaths;

  byType = lib.groupBy (ping: ping.type) maintainersToPing;

+16 −0
Original line number Diff line number Diff line
@@ -34,6 +34,22 @@ in
          The option value is not a list of maintainers, but an attribute set that maps module file names to lists of maintainers.
        '';
      };
      teams = mkOption {
        type =
          let
            allTeams = lib.attrValues lib.teams;
          in
          lib.types.addCheck sourceList (lib.all (v: lib.elem v allTeams))
          // {
            description = "list of lib.teams";
          };
        default = [ ];
        example = lib.literalExpression "[ lib.teams.acme lib.teams.haskell ]";
        description = ''
          List of team maintainers of each module.
          This option should be defined at most once per module.
        '';
      };
    };
  };
  meta.maintainers = with lib.maintainers; [