import json, os, signal, subprocess, sys
signal.signal(signal.SIGTERM, lambda *_: None)
root=os.environ['PR_PROOF_ROOT']; checkout=sys.argv[1]; side=sys.argv[2]; port=sys.argv[3]
run=root+'/'+side+'-'+__import__('datetime').datetime.now(__import__('datetime').timezone.utc).strftime('%H%M%S')
os.mkdir(run)
with open(root+'/'+side+'-run.txt','w') as f:f.write(run)
with open(root+'/state.json','w') as f:json.dump({'runId':side+'-'+run.rsplit('/',1)[1],'outage':False,'passed':False},f)
with open(run+'/server.log','w') as log:
 child=subprocess.Popen(['node','scripts/scenarios/start-app.ts','web',run+'/home','127.0.0.1',port],cwd=checkout,stdout=log,stderr=subprocess.STDOUT)
 with open(run+'/server.pid','w') as f:f.write(str(child.pid))
 try:sys.exit(child.wait())
 except KeyboardInterrupt:
  child.wait()
