#!/usr/bin/env python3 """Write a deterministic privacy receipt for explicitly selected local roots.""" from __future__ import annotations import argparse import json import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) from repro_control.privacy import scan_paths, write_receipt def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--checkout", type=Path, required=True) parser.add_argument("--root", type=Path, action="append", required=True) parser.add_argument("--intended-remote-map", type=Path, required=True) parser.add_argument("--output", type=Path, required=True) args = parser.parse_args() mapping = json.loads(args.intended_remote_map.read_text()) receipt = scan_paths(args.root, relative_to=args.checkout, intended_remote_map=mapping) write_receipt(args.output, receipt, require_clean=False) print(json.dumps({"exit_code": receipt["exit_code"], "findings": len(receipt["findings"])})) return receipt["exit_code"] if __name__ == "__main__": raise SystemExit(main())