from pathlib import Path
import shutil, json, tarfile, hashlib

ROOT = Path('/tmp/lead-29428-r1/evidence-capture')
SOURCE = Path('/home/ubuntu/wt/pr-29428')
TARGET = ROOT / 'nightly-source'
(TARGET / 'apps/server').mkdir(parents=True, exist_ok=True)
for name in ['package.json', 'vite.config.ts', 'tsconfig.base.json', 'pnpm-workspace.yaml', 'pnpm-lock.yaml']:
    if (SOURCE / name).exists():
        shutil.copy2(SOURCE / name, TARGET / name)
for name in ['node_modules', 'packages', 'scripts', 'infra']:
    if not (TARGET / name).exists():
        (TARGET / name).symlink_to(SOURCE / name, target_is_directory=True)
for name in ['src', 'scripts', 'schema']:
    shutil.copytree(SOURCE / 'apps/server' / name, TARGET / 'apps/server' / name, symlinks=True, dirs_exist_ok=True)
for name in ['package.json', 'vite.config.ts', 'tsconfig.json']:
    shutil.copy2(SOURCE / 'apps/server' / name, TARGET / 'apps/server' / name)
if not (TARGET / 'apps/server/node_modules').exists():
    (TARGET / 'apps/server/node_modules').symlink_to(SOURCE / 'apps/server/node_modules', target_is_directory=True)
p = TARGET / 'apps/server/package.json'
j = json.loads(p.read_text())
j['version'] = '0.1.6-nightly.20261102.4080'
p.write_text(json.dumps(j, indent=2) + '\n')
(ROOT / 'nightly-version-only.diff').write_text('Only source delta from b39fd402c62559744f892a2e164212a79e0a6ede in isolated nightly-source copy:\n--- apps/server/package.json\n+++ apps/server/package.json\n-  "version": "0.1.6",\n+  "version": "0.1.6-nightly.20261102.4080",\n')
for version, checksums in [('0.1.5', 'SHA256SUMS-0.1.5'), ('0.1.7-nightly.20261102.4080', 'SHA256SUMS-nightly')]:
    archive = ROOT / f't3-{version}-linux-x64.tar.gz'
    digest = hashlib.sha256(archive.read_bytes()).hexdigest()
    assert f'{digest}  {archive.name}' in (ROOT / checksums).read_text()
    print(f'archive {archive.name} SHA256={digest} verified against release SHA256SUMS', flush=True)
    with tarfile.open(archive) as tf:
        tf.extractall(ROOT / 'releases', filter='data')
