#!/bin/bash
# MNW CLI Deployment Script
# Cross-compiles for x86_64 Linux on macOS, uploads binary, restarts service.
# Run from the mnw-cli directory.
#
# Usage:
#   ./deploy/deploy.sh              # Full deploy (build + upload + config + restart)
#   ./deploy/deploy.sh --quick      # Quick deploy (build + upload binary + restart)
#   ./deploy/deploy.sh --config     # Config only (upload systemd unit)
#
# Prerequisites (one-time):
#   brew install zig
#   cargo install cargo-zigbuild
#   rustup target add x86_64-unknown-linux-gnu

set -e

# Configuration
SERVER="root@100.120.174.96"
REMOTE_DIR="/opt/mnw-cli"
STAGING_DIR="/var/lib/mnw-cli/staging"
BINARY_NAME="mnw-cli"
TARGET="x86_64-unknown-linux-gnu"
DEPLOY_DIR="deploy"

# Check we're in the right directory
if [ ! -f "Cargo.toml" ]; then
    echo "Error: Run this script from the mnw-cli/ directory"
    exit 1
fi

upload_config() {
    echo "[config] Uploading configuration files..."
    scp $DEPLOY_DIR/mnw-cli.service $SERVER:/etc/systemd/system/mnw-cli.service
    ssh $SERVER "systemctl daemon-reload"

    # Ensure directories exist
    ssh $SERVER "mkdir -p $REMOTE_DIR $STAGING_DIR"
    ssh $SERVER "chown mnw-cli:mnw-cli $STAGING_DIR"

    echo "[config] Done"
}

build_binary() {
    echo "[build] Cross-compiling for $TARGET..."
    ulimit -n 65536 2>/dev/null || true
    cargo zigbuild --release --target $TARGET
    echo "[build] Done: target/$TARGET/release/$BINARY_NAME"
}

upload_binary() {
    echo "[upload] Stopping service and uploading binary..."
    ssh $SERVER "systemctl stop mnw-cli || true"
    scp target/$TARGET/release/$BINARY_NAME $SERVER:$REMOTE_DIR/$BINARY_NAME
    ssh $SERVER "chmod +x $REMOTE_DIR/$BINARY_NAME"
    echo "[upload] Done"
}

restart_app() {
    echo "[restart] Restarting mnw-cli..."
    ssh $SERVER "systemctl restart mnw-cli"
    sleep 1
    echo ""
    ssh $SERVER "systemctl status mnw-cli --no-pager"
}

case "${1:-full}" in
    --quick)
        echo "=== Quick Deploy ==="
        build_binary
        upload_binary
        restart_app
        ;;
    --config)
        echo "=== Config Deploy ==="
        upload_config
        ;;
    full|"")
        echo "=== Full Deploy ==="
        build_binary
        upload_config
        upload_binary
        restart_app
        ;;
    *)
        echo "Usage: $0 [--quick|--config]"
        exit 1
        ;;
esac

echo ""
echo "=== Deploy Complete ==="
