ci: move validate maintainers logic to lib

Allow easily running the individual checks outside of GHA for easier
testing/modification.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
Austin Horstman 2025-07-17 14:35:13 -05:00
parent bc9f3c8413
commit defabc11ab
4 changed files with 131 additions and 88 deletions

View file

@ -0,0 +1,46 @@
#!/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()