import hashlib
import json
from pathlib import Path
P=Path(__file__).resolve().parent
manifest=json.loads((P/'manifest.json').read_text())
expected=(P/'MANIFEST.sha256').read_text().split()[0]
assert hashlib.sha256((P/'manifest.json').read_bytes()).hexdigest()==expected
for group in ['public','private']:
    for entry in manifest[group]:
        file=P/entry['path']
        assert file.stat().st_size==entry['bytes']
        assert hashlib.sha256(file.read_bytes()).hexdigest()==entry['sha256'],entry['path']
        if group=='private':
            assert file.stat().st_mode&0o777==0o600
            directory=file.parent
            while directory!=P:
                assert directory.stat().st_mode&0o777==0o700
                directory=directory.parent
print(json.dumps({'verified_public':len(manifest['public']),'verified_private':len(manifest['private']),'manifest_sha256':expected}))
