20 lines
770 B
Python
20 lines
770 B
Python
#!/usr/bin/env python3
|
|
"""Refuse release qualification while acceptance evidence is incomplete."""
|
|
import json,sys
|
|
from pathlib import Path
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
ledger=json.loads((ROOT/'docs/acceptance.json').read_text())
|
|
blocked=[]
|
|
for name,case in ledger['cases'].items():
|
|
if case['status']!='passed' or not case['evidence']:
|
|
blocked.append(name)
|
|
continue
|
|
for evidence in case['evidence']:
|
|
path=(ROOT/evidence).resolve()
|
|
if not path.is_relative_to(ROOT) or not path.is_file():blocked.append(name);break
|
|
if blocked:
|
|
print('Not release-qualified; missing passed evidence:')
|
|
for name in blocked:print(' - '+name)
|
|
sys.exit(1)
|
|
print('Acceptance ledger complete. Review provenance, native packages and publication metadata before release.')
|