#!/bin/bash

# =================================================================
# Rithmic Bridge Publisher Runner (WSL2 -> Windows)
#
# WSL2からWindows側のPython/uvを使用してパブリッシャーを起動する。
# R|Trader Proのポートを自動検出し、環境変数を設定して実行する。
# =================================================================

set -e

# Windows側のプロジェクトルートパスを取得 (WSLパス -> Windowsパス)
SCRIPT_DIR=$(cd $(dirname $0); pwd)
WIN_PROJECT_DIR=$(wslpath -w "$SCRIPT_DIR")

echo "==================================================="
echo "  Rithmic Bridge Publisher (WSL2 -> Windows)"
echo "==================================================="
echo "Project Dir: $WIN_PROJECT_DIR"
echo

# 1. R|Trader Proのポート自動検出
echo "[1/4] Detecting R|Trader Pro Plugin Port..."

# PowerShellを使ってRTraderPro.exeのリスニングポートを特定
DETECT_CMD="\$proc = Get-Process RTraderPro -ErrorAction SilentlyContinue; if (\$proc) { Get-NetTCPConnection -OwningProcess \$proc.Id -State Listen | Sort-Object LocalPort | Select-Object -ExpandProperty LocalPort -First 1 }"
RITHMIC_PORT=$(powershell.exe -Command "$DETECT_CMD" | tr -d '\r')

if [ -z "$RITHMIC_PORT" ]; then
    echo "  [WARNING] R|Trader Pro (RTraderPro.exe) is not running or no listening port found."
    echo "  Please start R|Trader Pro and enable 'Allow Plugins'."
    echo "  Using default port 56000 for now."
    RITHMIC_PORT=56000
else
    echo "  [SUCCESS] Found R|Trader Pro listening on port: $RITHMIC_PORT"
fi

# 2. .envファイルの更新/作成 (一時的な環境変数設定だけでなく、.envも更新して永続化を図るか、環境変数渡しのみにするか)
# ここでは環境変数として渡す
export RITHMIC_PORT=$RITHMIC_PORT

echo
echo "[2/4] Syncing dependencies (Windows side)..."
# Windows側のuvを使用
powershell.exe -Command "pushd '$WIN_PROJECT_DIR'; \$env:UV_PROJECT_ENVIRONMENT='.venv-win'; uv sync --all-extras; popd"

echo
echo "[3/4] Configuring Environment..."
# .envが存在しない場合はコピー
if [ ! -f ".env" ]; then
    echo "  [INFO] Copying .env.example to .env"
    cp .env.example .env
fi

echo "  RITHMIC_PORT: $RITHMIC_PORT"

echo
echo "[4/4] Starting Publisher..."
echo "Press Ctrl+C to stop."
echo

# launcher.bat はプロジェクトルートに pushd するため、環境変数設定はPowershell経由で行う必要があるが、
# 単純化のため cmd.exe でラッパーをたたく。
# ただし、環境変数を渡すのが面倒。
# PowerShell から cmd.exe /c launcher.bat を呼べば環境変数は引き継がれるはず。

# Windowsパスに変換
WIN_LAUNCHER_PATH=$(wslpath -w "$SCRIPT_DIR/tools/launcher.bat")

RUN_CMD="\$env:RITHMIC_PORT='$RITHMIC_PORT'; cmd.exe /c \"$WIN_LAUNCHER_PATH\""

powershell.exe -Command "$RUN_CMD"
