import os, sys, json, subprocess, secrets
from pathlib import Path
side=sys.argv[1]; root=Path(sys.argv[2]); scratch=Path(os.environ['PROOF_SCRATCH']); home=root/'.t3/manual-proof'
subprocess.run(['python3',str(scratch/'prepare-home.py'),str(home)],check=True)
web=13180 if side=='before' else 13181; port=23180 if side=='before' else 23181
env=dict(os.environ,T3CODE_DEV_SEED='0',T3CODE_PORT_OFFSET=str(web-5733),T3CODE_DEV_AUTH_TOKEN=secrets.token_hex(32),T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD='0');env['PATH']=str(home/'bin')+':'+env['PATH']
processes=[]
for mode,args in [('dev:server',[]),('dev:web',['--','--host','0.0.0.0'])]:
 log=open(scratch/f'{side}-{mode.replace(":","-")}.log','w')
 p=subprocess.Popen(['node','scripts/dev-runner.ts',mode,'--home-dir',str(home),'--no-seed','--port',str(port),'--dev-url',f'http://127.0.0.1:{web}',*args],cwd=root,env=env,stdout=log,stderr=subprocess.STDOUT,start_new_session=True); processes.append(p.pid)
(scratch/f'{side}-private.json').write_text(json.dumps({'root':str(root),'home':str(home),'web':web,'port':port,'processes':processes}))
print(json.dumps({'side':side,'web':web,'port':port,'processes':processes}))
