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>
46 lines
1.4 KiB
Python
Executable file
46 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
"""
|
|
Validate maintainer entries in modules/lib/maintainers.nix
|
|
|
|
This script validates that all maintainer entries have required fields
|
|
and that the data types are correct.
|
|
"""
|
|
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def main():
|
|
print("🔍 Validating maintainer entries...")
|
|
|
|
result = subprocess.run(['nix', 'eval', '--file', 'modules/lib/maintainers.nix', '--json'],
|
|
capture_output=True, text=True, check=True)
|
|
maintainers = json.loads(result.stdout)
|
|
errors = []
|
|
|
|
for name, data in maintainers.items():
|
|
if 'github' not in data:
|
|
errors.append(f'{name}: Missing required field "github"')
|
|
if 'githubId' not in data:
|
|
errors.append(f'{name}: Missing required field "githubId"')
|
|
|
|
if 'githubId' in data:
|
|
github_id = data['githubId']
|
|
if not isinstance(github_id, int):
|
|
errors.append(f'{name}: githubId must be a number, not a string: {github_id} (type: {type(github_id).__name__})')
|
|
elif github_id <= 0:
|
|
errors.append(f'{name}: githubId must be positive: {github_id}')
|
|
|
|
if errors:
|
|
print('❌ Validation errors found:')
|
|
for error in errors:
|
|
print(f' - {error}')
|
|
sys.exit(1)
|
|
else:
|
|
print('✅ All maintainer entries are valid')
|
|
print(f'✅ Validated {len(maintainers)} maintainer entries')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|