"""Package the standalone kit, reproducible source, and review evidence."""
from pathlib import Path
import zipfile,json,hashlib
R=Path(__file__).resolve().parent
names=['kit.glb','kit.blend','kit.json','materials.json','README.md','build_kit.py','geometry.py','shelf.py','render_kit.py','assembly_check.py','make_sheet.py','validate_delivery.py','browser_check.py','package_kit.py','kit_sheet.png','material_sheet.png','assembly_check.png','assembly_clay.png','details_joinery.png','details_timber.png','details_roof.png','details_props.png','clay_check.png','reverse_check.png','audit.json','validation.json','runtime_check.json','texture_evidence.json','build_evidence.json','REVIEW.md']
files=[R/n for n in names]
for directory in ['materials','sources','viewer','renders']:files.extend(p for p in (R/directory).rglob('*') if p.is_file())
files.extend(R.glob('runtime_*.png'))
manifest={str(p.relative_to(R)):{'bytes':p.stat().st_size,'sha256':hashlib.sha256(p.read_bytes()).hexdigest()} for p in sorted(files)}
(R/'delivery_manifest.json').write_text(json.dumps(manifest,indent=2));files.append(R/'delivery_manifest.json')
with zipfile.ZipFile(R/'medieval-atom-kit-v1.zip','w',zipfile.ZIP_DEFLATED,compresslevel=5) as z:
 for p in sorted(files):z.write(p,'medieval-atom-kit-v1/'+str(p.relative_to(R)))
print('Packaged',len(files),'files;', (R/'medieval-atom-kit-v1.zip').stat().st_size,'bytes')
