#!/usr/bin/env python3
"""Create a manifest for this slice only; never edit another slice's evidence."""
import hashlib
import json
import sys
from pathlib import Path

namespace = sys.argv[1] if len(sys.argv) > 1 else 'private-evidence'
assert namespace in ('private-evidence', 'read-private-evidence', 'schema-private-evidence', 'api-private-evidence', 'cleanup-private-evidence')
root = Path(__file__).parent / namespace
assert not (root / 'manifest.json').exists(), 'Already sealed'
entries = []
for file in sorted(root.rglob('*')):
    if file.is_file():
        assert file.stat().st_mode & 0o077 == 0, 'Private evidence mode'
        entries.append({'path': file.relative_to(root).as_posix(), 'bytes': file.stat().st_size, 'sha256': hashlib.sha256(file.read_bytes()).hexdigest()})
manifest = root / 'manifest.json'
manifest.write_text(json.dumps({'files': entries}, ensure_ascii=False, indent=2) + '\n')
manifest.chmod(0o600)
print(json.dumps({'files': len(entries), 'manifest_sha256': hashlib.sha256(manifest.read_bytes()).hexdigest()}))
