#!/usr/bin/python3 import subprocess import sys import yaml def read_from_git(ref, path): return subprocess.check_output( ['git', 'show', '%s:%s' % (ref, path)], shell=False, close_fds=True) def validate_issues(issues): for name, data in issues.items(): if 'description' not in data: print('ERROR: issue %s is missing a description' % name, file=sys.stderr) sys.exit(1) def ensure_issues_are_known(issues, packages): for package, data in packages.items(): for issue in data.get('issues', []): if issue not in issues: print('ERROR: issue %s not listed in issues.yml' % issue, file=sys.stderr) sys.exit(1) def main(): for ref_line in sys.stdin: old_value, new_value, ref_name = ref_line.strip().split(' ', 3) issues = yaml.safe_load(read_from_git(new_value, 'issues.yml')) packages = yaml.safe_load(read_from_git(new_value, 'packages.yml')) validate_issues(issues) ensure_issues_are_known(issues, packages) if __name__ == '__main__': main()