import pathlib,subprocess,sys
root=pathlib.Path(sys.argv[1]);path='apps/mobile/src/features/review/useReviewDiffData.ts'
s=subprocess.check_output(['git','show','HEAD:'+path],cwd=root,text=True)
helper='''
const proofIds = new WeakMap<object, number>();
let proofNext = 1;
function recordProof(scope: string, indices: Set<number>, queries: ReadonlyArray<object | null>, patches: ReadonlyArray<ParsedFilePatch | null>) {
  const files = queries.map((query, i) => {
    if (query && !proofIds.has(query)) proofIds.set(query, proofNext++);
    const patch = patches[i];
    return { index: i, query: query ? proofIds.get(query) : null, state: patch?._tag,
      rows: patch?._tag === "Success" && patch.value.parsed.kind === "files" ? patch.value.parsed.files[0]?.rows.length : null,
      hash: patch?._tag === "Success" ? patch.value.source.diffHash : null };
  });
  logReviewDiffDiagnostic("proof-query", { scope, requested: [...indices], files });
}
'''
s=s.replace('export function useReviewDiffData(input:',helper+'\nexport function useReviewDiffData(input:')
s=s.replace('    logReviewDiffDiagnostic("parsed diff files", {','    recordProof(scope, indices, queries, patches);\n    logReviewDiffDiagnostic("parsed diff files", {')
(root/path).write_text(s)
