mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-12 10:14:31 +02:00
flake/dev/generate-all-maintainers: init
Used to generate a full maintainers.nix file that can be used for RFC39 invites. We will use these invites to support requesting reviews from maintainers.
This commit is contained in:
parent
95f129ca65
commit
056cd86cc0
5 changed files with 328 additions and 0 deletions
|
@ -0,0 +1,74 @@
|
|||
# Extract maintainers from nixvim configuration using meta.maintainers
|
||||
# This script evaluates an empty nixvimConfiguration and extracts the merged maintainer information
|
||||
let
|
||||
nixvim = import ../../..;
|
||||
lib = nixvim.inputs.nixpkgs.lib.extend nixvim.lib.overlay;
|
||||
|
||||
emptyConfig = lib.nixvim.evalNixvim {
|
||||
modules = [ { _module.check = false; } ];
|
||||
extraSpecialArgs = {
|
||||
pkgs = null;
|
||||
};
|
||||
};
|
||||
|
||||
inherit (emptyConfig.config.meta) maintainers;
|
||||
|
||||
extractMaintainerObjects =
|
||||
maintainerData:
|
||||
lib.pipe maintainerData [
|
||||
lib.attrValues
|
||||
lib.concatLists
|
||||
lib.unique
|
||||
];
|
||||
|
||||
allMaintainerObjects = extractMaintainerObjects maintainers;
|
||||
|
||||
allMaintainerNames = lib.filter (name: name != null) (
|
||||
map (maintainer: maintainer.github) allMaintainerObjects
|
||||
);
|
||||
|
||||
nixvimMaintainers = import ../../../lib/maintainers.nix;
|
||||
nixvimMaintainerNames = lib.attrNames nixvimMaintainers;
|
||||
partitionedMaintainers = lib.partition (nameValue: lib.elem nameValue.name nixvimMaintainerNames) (
|
||||
lib.attrsToList maintainerDetails
|
||||
);
|
||||
|
||||
maintainerDetails = lib.pipe allMaintainerObjects [
|
||||
(map (obj: {
|
||||
name = obj.github;
|
||||
value = obj // {
|
||||
source =
|
||||
if categorizedMaintainers.nixvim ? ${obj.github} then
|
||||
"nixvim"
|
||||
else if categorizedMaintainers.nixpkgs ? ${obj.github} then
|
||||
"nixpkgs"
|
||||
else
|
||||
throw "${obj.github} is neither a nixvim or nixpkgs maintainer";
|
||||
};
|
||||
}))
|
||||
lib.listToAttrs
|
||||
];
|
||||
|
||||
categorizedMaintainers = {
|
||||
nixvim = lib.listToAttrs partitionedMaintainers.right;
|
||||
nixpkgs = lib.listToAttrs partitionedMaintainers.wrong;
|
||||
};
|
||||
|
||||
formattedMaintainers = lib.generators.toPretty {
|
||||
multiline = true;
|
||||
indent = "";
|
||||
} maintainerDetails;
|
||||
in
|
||||
{
|
||||
raw = maintainers;
|
||||
names = allMaintainerNames;
|
||||
details = maintainerDetails;
|
||||
categorized = categorizedMaintainers;
|
||||
formatted = formattedMaintainers;
|
||||
|
||||
stats = {
|
||||
totalMaintainers = lib.length allMaintainerNames;
|
||||
nixvimMaintainers = lib.length (lib.attrNames categorizedMaintainers.nixvim);
|
||||
nixpkgsMaintainers = lib.length (lib.attrNames categorizedMaintainers.nixpkgs);
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue