#!/usr/bin/env bash
# bootstrap-deploy.sh — 编译部署 xwcode 到自举环境
# 用法: bash scripts/bootstrap-deploy.sh [TAG_OR_BRANCH]
#
# 步骤:
#   1. 在 xwcode-ar 仓库编译 release
#   2. 拷贝到自举环境 /data1/km/xwcode-xw/
#   3. 拷贝到 PATH ~/.local/bin/xwcode
#   4. 同步源码到自举环境(git pull)
#   5. 验证版本
#
# 可选指定 TAG_OR_BRANCH,自举环境会 checkout 到该版本
# 常见用法:
#   bash scripts/bootstrap-deploy.sh           # 部署当前版本
#   bash scripts/bootstrap-deploy.sh v0.85.0   # 部署指定 tag
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
SELFBOOT_DIR="/data1/km/xwcode-xw"
PATH_BIN="$HOME/.local/bin/xwcode"
TAG_OR_BRANCH="${1:-}"

echo "=== bootstrap-deploy ==="
echo "repo:    $REPO_ROOT"
echo "target:  $SELFBOOT_DIR + $PATH_BIN"
echo "version: ${TAG_OR_BRANCH:-current}"
echo ""

# 1. 编译 release
echo "[1/5] cargo build --release ..."
cd "$REPO_ROOT"
CARGO_BUILD_JOBS=2 cargo build --release --locked

BINARY="$REPO_ROOT/target/release/xwcode"
if [ ! -f "$BINARY" ]; then
    echo "ERROR: $BINARY not found"
    exit 1
fi

# 2. 拷贝到自举环境
echo "[2/5] cp → $SELFBOOT_DIR/target/release/xwcode"
cp "$BINARY" "$SELFBOOT_DIR/target/release/xwcode"

# 3. 拷贝到 PATH
echo "[3/5] cp → $PATH_BIN"
cp "$BINARY" "$PATH_BIN"

# 4. 同步源码到自举环境
echo "[4/5] sync source to $SELFBOOT_DIR"
cd "$SELFBOOT_DIR"
git fetch origin
if [ -n "$TAG_OR_BRANCH" ]; then
    git checkout "$TAG_OR_BRANCH" 2>/dev/null || echo "WARNING: could not checkout $TAG_OR_BRANCH"
fi
git pull origin master 2>/dev/null || echo "WARNING: could not pull (may be on a different branch)"

# 5. 验证
VERSION=$("$PATH_BIN" --version 2>/dev/null || echo "unknown")
SELFBOOT_VERSION=$("$SELFBOOT_DIR/target/release/xwcode" --version 2>/dev/null || echo "unknown")
echo "[5/5] verify"
echo "  PATH:      $VERSION"
echo "  selfboot:  $SELFBOOT_VERSION"

if [ "$VERSION" != "$SELFBOOT_VERSION" ]; then
    echo "WARNING: version mismatch!"
    exit 1
fi

echo ""
echo "=== deploy done: $VERSION ==="
echo "start:  bash scripts/bootstrap-start.sh"