#!/usr/bin/env bash
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 ""
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
echo "[2/5] cp → $SELFBOOT_DIR/target/release/xwcode"
cp "$BINARY" "$SELFBOOT_DIR/target/release/xwcode"
echo "[3/5] cp → $PATH_BIN"
cp "$BINARY" "$PATH_BIN"
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)"
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"