"""Place this script, completion-download.json and every part in one directory, then run it."""
import hashlib, json
from pathlib import Path
root = Path(__file__).resolve().parent
manifest = json.loads((root / 'completion-download.json').read_text())
for part in manifest['parts']:
    p = root / part['file']
    assert p.name == part['file'] and p.is_file(), f"Missing or invalid part: {part['file']}"
    assert p.stat().st_size == part['bytes']
    assert hashlib.sha256(p.read_bytes()).hexdigest() == part['sha256'], f"Incorrect bytes: {part['file']}"
output = root / manifest['filename']
assert output.name == manifest['filename'] and not output.exists(), 'Output already exists or invalid name'
digest = hashlib.sha256()
with output.open('xb') as target:
    for part in manifest['parts']:
        with (root / part['file']).open('rb') as source:
            while block := source.read(1024 * 1024):
                digest.update(block)
                target.write(block)
assert output.stat().st_size == manifest['bytes']
assert digest.hexdigest() == manifest['sha256'], 'Whole archive checksum mismatch'
print(f'Verified archive ready: {output.name}')
