mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
Allow easily running the individual checks outside of GHA for easier testing/modification. Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
57 lines
2.1 KiB
Python
Executable file
57 lines
2.1 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
"""
|
|
Check for duplicate maintainers between home-manager and nixpkgs
|
|
|
|
This script compares the maintainers in home-manager with those in nixpkgs
|
|
to identify duplicates that should be removed from home-manager.
|
|
"""
|
|
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def main():
|
|
print("🔍 Checking for duplicate maintainers between HM and nixpkgs...")
|
|
|
|
# Get home-manager maintainers
|
|
hm_result = subprocess.run(['nix', 'eval', '--file', 'modules/lib/maintainers.nix', '--json'],
|
|
capture_output=True, text=True, check=True)
|
|
hm_maintainers = json.loads(hm_result.stdout)
|
|
hm_github_users = set()
|
|
for name, data in hm_maintainers.items():
|
|
if 'github' in data:
|
|
hm_github_users.add(data['github'])
|
|
|
|
# Get nixpkgs maintainers
|
|
nixpkgs_result = subprocess.run(['nix', 'eval', 'nixpkgs#lib.maintainers', '--json'],
|
|
capture_output=True, text=True, check=True)
|
|
nixpkgs_maintainers = json.loads(nixpkgs_result.stdout)
|
|
nixpkgs_github_users = set()
|
|
for name, data in nixpkgs_maintainers.items():
|
|
if isinstance(data, dict) and 'github' in data:
|
|
nixpkgs_github_users.add(data['github'])
|
|
|
|
# Find duplicates
|
|
duplicates = hm_github_users.intersection(nixpkgs_github_users)
|
|
|
|
if duplicates:
|
|
print(f'❌ Found {len(duplicates)} duplicate maintainers between HM and nixpkgs:')
|
|
for github_user in sorted(duplicates):
|
|
# Find the HM attribute name for this github user
|
|
hm_attr = None
|
|
for attr_name, data in hm_maintainers.items():
|
|
if data.get('github') == github_user:
|
|
hm_attr = attr_name
|
|
break
|
|
print(f' - {github_user} (HM attribute: {hm_attr})')
|
|
print()
|
|
print('These maintainers should be removed from HM maintainers file to avoid duplication.')
|
|
print('They can be referenced directly from nixpkgs instead.')
|
|
sys.exit(1)
|
|
else:
|
|
print('✅ No duplicate maintainers found')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|