#!/bin/bash
set -euo pipefail

cdx_state=/tmp/cdx-rpe-b-worker.state
cdx_source=/Users/wiscourper/Documents/workspace/zhct/zhctproject/store
cdx_pack=/Users/wiscourper/Documents/workspace/zhct/zhctprompt/work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-store-rpe-existing-20261006
cdx_harness=/Users/wiscourper/Documents/workspace/zhct/zhctprompt/work/2026-09-28-smart-canteen-dm8-poc/http-harness/store
cdx_php=/opt/homebrew/Cellar/php@7.3/7.3.33_14/bin/php
cdx_port=18082
cdx_redis_port=16379

[[ ! -e "$cdx_state" ]]
[[ -x "$cdx_php" && -d "$cdx_source/vendor" ]]
[[ "$(shasum -a 256 "$cdx_pack/b_database.php" | cut -d' ' -f1)" == "6a64b60c0c4f9da3856ea2a0a39a828609a6d73053b2946b0459d28e7c2a5216" ]]
[[ "$(shasum -a 256 "$cdx_harness/public/index.php" | cut -d' ' -f1)" == "c333605da346af58b46bdea84038e183f87850c1c2d162eb60ab2aa5292d776b" ]]
[[ "$(shasum -a 256 "$cdx_harness/public/router.php" | cut -d' ' -f1)" == "2d444eeca77269f60826653e5d0d4a51071f7d7f1826b623dda2391dd2f35380" ]]
[[ "$(shasum -a 256 "$cdx_harness/external_stubs.php" | cut -d' ' -f1)" == "137eb59f11e2257a6ee55bba5b382cc13570e108c4e4bb9b358c3f0d1e104108" ]]
[[ -z "$(lsof -nP -t -iTCP:$cdx_port -sTCP:LISTEN 2>/dev/null)" ]]
[[ -z "$(lsof -nP -t -iTCP:$cdx_redis_port -sTCP:LISTEN 2>/dev/null)" ]]

cdx_root="$(mktemp -d /tmp/cdx-rpe-b-runtime.XXXXXX)"
chmod 700 "$cdx_root"
trap 'if [[ -n "${cdx_root-}" && "$cdx_root" =~ ^/tmp/cdx-rpe-b-runtime\.[A-Za-z0-9]+$ && -d "$cdx_root" ]]; then rm -rf "$cdx_root"; fi' ERR
rsync -a --exclude='.git' --exclude='runtime' "$cdx_source/" "$cdx_root/"
mkdir -p "$cdx_root/application/config/poc" "$cdx_root/runtime/cache" "$cdx_root/runtime/log"
cp "$cdx_harness/env.php" "$cdx_root/env.php"
cp "$cdx_harness/public/index.php" "$cdx_root/public/index.php"
cp "$cdx_harness/public/router.php" "$cdx_root/public/router.php"
cp "$cdx_harness/external_stubs.php" "$cdx_root/external_stubs.php"
cp "$cdx_harness/application/config/poc/config.php" "$cdx_root/application/config/poc/config.php"
cp "$cdx_pack/b_database.php" "$cdx_root/application/database.php"

cdx_redis_pidfile="$cdx_root/redis.pid"
/opt/homebrew/bin/redis-server --bind 127.0.0.1 --port "$cdx_redis_port" \
    --daemonize yes --pidfile "$cdx_redis_pidfile" --dir "$cdx_root" \
    --dbfilename rpe.rdb --save '' --appendonly no
for _ in {1..40}; do
    [[ -s "$cdx_redis_pidfile" ]] && break
    sleep 0.05
done
cdx_redis_pid="$(tr -cd '0-9' < "$cdx_redis_pidfile")"
[[ "$cdx_redis_pid" =~ ^[0-9]+$ ]]

cdx_cfg="$cdx_source/application/config/local/database.php"
cdx_host="$($cdx_php -r '$c=require $argv[1];echo $c["hostname"];' "$cdx_cfg")"
cdx_db_port="$($cdx_php -r '$c=require $argv[1];echo $c["hostport"]??3306;' "$cdx_cfg")"
cdx_schema="$($cdx_php -r '$c=require $argv[1];echo $c["database"];' "$cdx_cfg")"
cdx_user="$($cdx_php -r '$c=require $argv[1];echo $c["username"];' "$cdx_cfg")"
cdx_password="$($cdx_php -r '$c=require $argv[1];echo $c["password"];' "$cdx_cfg")"
cdx_charset="$($cdx_php -r '$c=require $argv[1];echo $c["charset"]??"utf8";' "$cdx_cfg")"
cdx_ai_host="$($cdx_php -r '$c=require $argv[1];echo $c["ai_zhct"]["hostname"];' "$cdx_cfg")"
cdx_ai_port="$($cdx_php -r '$c=require $argv[1];echo $c["ai_zhct"]["hostport"]??3306;' "$cdx_cfg")"
cdx_ai_schema="$($cdx_php -r '$c=require $argv[1];echo $c["ai_zhct"]["database"];' "$cdx_cfg")"
cdx_ai_user="$($cdx_php -r '$c=require $argv[1];echo $c["ai_zhct"]["username"];' "$cdx_cfg")"
cdx_ai_password="$($cdx_php -r '$c=require $argv[1];echo $c["ai_zhct"]["password"];' "$cdx_cfg")"

umask 077
cdx_pid=$$
printf 'root=%s\npid=%s\nport=%s\nredis_pid=%s\nredis_port=%s\n' \
    "$cdx_root" "$cdx_pid" "$cdx_port" "$cdx_redis_pid" "$cdx_redis_port" > "$cdx_state"
chmod 600 "$cdx_state"
trap - ERR
printf '{"status":"starting","port":%s,"private_worker":true}\n' "$cdx_port"
exec /usr/bin/env \
    POC_HOST="$cdx_host" POC_PORT="$cdx_db_port" POC_SCHEMA="$cdx_schema" \
    POC_USER="$cdx_user" POC_PASSWORD="$cdx_password" POC_CHARSET="$cdx_charset" \
    POC_AI_HOST="$cdx_ai_host" POC_AI_PORT="$cdx_ai_port" POC_AI_SCHEMA="$cdx_ai_schema" \
    POC_AI_USER="$cdx_ai_user" POC_AI_PASSWORD="$cdx_ai_password" \
    POC_DIALECT=mysql POC_EXTERNAL_STUBS=1 POC_REAL_QUEUE=0 \
    POC_REDIS_HOST=127.0.0.1 POC_REDIS_PORT="$cdx_redis_port" \
    POC_TARGET_ROOT="$cdx_root" POC_BASE_URL="http://127.0.0.1:$cdx_port" \
    "$cdx_php" -S "127.0.0.1:$cdx_port" -t "$cdx_root/public" \
    "$cdx_root/public/router.php"
