#!/bin/bash
# BurpSuite MCP Full Control - Linux / macOS Build Script
# Requires: JDK 21+, curl
# Produces: build/libs/burp-mcp-full.jar (fat jar, Burp-loadable)

set -e

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"

# ===== Auto-detect JAVA_HOME =====
if [ -z "$JAVA_HOME" ]; then
    if command -v javac >/dev/null 2>&1; then
        JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v javac)")")")"
    else
        echo "ERROR: javac not found. Install JDK 21+ or set JAVA_HOME."
        exit 1
    fi
fi
JAVAC="$JAVA_HOME/bin/javac"
JAR="$JAVA_HOME/bin/jar"

if ! "$JAVAC" -version 2>/dev/null | grep -qE '(1\.)?(2[1-9]|[3-9][0-9])'; then
    echo "WARNING: JDK 21+ recommended. Detected: $("$JAVAC" -version 2>&1)"
fi

SRC="src/main/java/com/burpmcp"
RES="src/main/resources"
LIB="lib"
OUT="build/classes"
DIST="build/libs"
MONTOYA="https://repo1.maven.org/maven2/net/portswigger/burp/extensions/montoya-api/2025.5/montoya-api-2025.5.jar"
GSON="https://repo1.maven.org/maven2/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar"
NANO="https://repo1.maven.org/maven2/org/nanohttpd/nanohttpd/2.3.1/nanohttpd-2.3.1.jar"

echo "[1/4] Downloading dependencies..."
mkdir -p "$LIB"
[ -f "$LIB/montoya-api.jar" ] || curl -sL -o "$LIB/montoya-api.jar" "$MONTOYA"
[ -f "$LIB/gson.jar" ]        || curl -sL -o "$LIB/gson.jar"        "$GSON"
[ -f "$LIB/nanohttpd.jar" ]   || curl -sL -o "$LIB/nanohttpd.jar"   "$NANO"

echo "[2/4] Compiling..."
mkdir -p "$OUT"
"$JAVAC" --release 21 -cp "$LIB/montoya-api.jar:$LIB/gson.jar:$LIB/nanohttpd.jar" -d "$OUT" "$SRC"/*.java

# Copy resources (extension descriptor) so the jar is loadable by Burp
cp -r "$RES/META-INF" "$OUT/"

echo "[3/4] Packaging fat jar..."
mkdir -p "$DIST"
cd "$OUT"
"$JAR" xf "../../$LIB/gson.jar" com
"$JAR" xf "../../$LIB/nanohttpd.jar" fi
cd ../..
"$JAR" cf "$DIST/burp-mcp-full.jar" -C "$OUT" .

echo "[4/4] Done!"
echo "Output: $DIST/burp-mcp-full.jar"
echo ""
echo "Install: Burp Suite -> Extensions -> Add -> Java -> Select $DIST/burp-mcp-full.jar"
echo ""
echo "MCP config (any client):"
echo "  { \"command\": \"node\", \"args\": [\"$SCRIPT_DIR/mcp-bridge.js\"] }"
