#!/usr/bin/env bash
# Record the live stdout of the identical real-server driver on each checkout.
set -eu
worktree=$1
scratch=$2
side=$3
export PYTHONPATH="$scratch/deps"
export XDG_CONFIG_HOME="$scratch/terminal-config"
export NO_AT_BRIDGE=1
mkdir -p "$XDG_CONFIG_HOME"
ffmpeg -y -loglevel error -f x11grab -framerate 10 -video_size 1280x760 -i "$DISPLAY" -c:v libx264 -preset ultrafast -crf 18 -pix_fmt yuv420p "$scratch/$side.mp4" > "$scratch/$side-ffmpeg-private.log" 2>&1 &
recorder_pid=$!
gnome-terminal --geometry=140x42+0+0 --hide-menubar --title="T3 Code lifecycle evidence" --wait -- bash -c '
  printf "\033[?25l"
  python3 "$2/lifecycle.py" "$1" "$2/sdk" "$2" > >(tee "$2/$3-transcript.txt") 2>"$2/$3-driver-private.log"
  printf "%s\n" "$?" > "$2/$3-exit"
  touch "$2/$3-done"
  sleep 8
' record-terminal "$worktree" "$scratch" "$side" > "$scratch/$side-terminal-private.log" 2>&1 &
terminal_pid=$!
while [ ! -f "$scratch/$side-done" ]; do sleep .5; done
sleep 1
import -window root -crop 1280x760+0+0 "$scratch/$side-check-1.png"
sleep .5
import -window root -crop 1280x760+0+0 "$scratch/$side-check-2.png"
compare -metric AE "$scratch/$side-check-1.png" "$scratch/$side-check-2.png" null: 2> "$scratch/$side-stability.txt"
cp "$scratch/$side-check-2.png" "$scratch/$side.png"
sleep 1
kill -INT "$recorder_pid"
wait "$recorder_pid" || test "$?" -eq 255
wait "$terminal_pid"
