34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
import hashlib, json
|
|
from pathlib import Path
|
|
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
EXCLUDE={'PACKAGE_MANIFEST.json','SHA256SUMS.txt'}
|
|
|
|
def sha(path: Path)->str:
|
|
h=hashlib.sha256()
|
|
with path.open('rb') as f:
|
|
for b in iter(lambda:f.read(1024*1024),b''): h.update(b)
|
|
return h.hexdigest()
|
|
|
|
files=[]
|
|
for p in sorted(ROOT.rglob('*')):
|
|
if not p.is_file(): continue
|
|
rel=p.relative_to(ROOT).as_posix()
|
|
if rel in EXCLUDE or '/__pycache__/' in f'/{rel}/': continue
|
|
files.append({'path':rel,'bytes':p.stat().st_size,'sha256':sha(p)})
|
|
manifest={
|
|
'package':'KArtSell_Aegis_v12_5_execution_assurance_complete',
|
|
'version':'12.5',
|
|
'status':'IMPLEMENTATION_TEMPLATE_STATIC_VALIDATED_RUNTIME_EVIDENCE_REQUIRED',
|
|
'boundary':['RESEARCH_CANDIDATE_NOT_PRODUCTION','AUTOMATIC_ORDER_OFF','KIS_SUBMISSION_OFF','AUTO_MODEL_PROMOTION_OFF'],
|
|
'fileCount':len(files),
|
|
'totalBytes':sum(x['bytes'] for x in files),
|
|
'files':files,
|
|
}
|
|
(ROOT/'PACKAGE_MANIFEST.json').write_text(json.dumps(manifest,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
|
with (ROOT/'SHA256SUMS.txt').open('w',encoding='utf-8') as f:
|
|
for x in files: f.write(f"{x['sha256']} {x['path']}\n")
|
|
print(f"manifest files={len(files)} bytes={manifest['totalBytes']}")
|