# ReVa (Reverse Engineering Assistant) MCP Server
# Ghidra extension providing MCP server for AI-assisted reverse engineering
# https://github.com/cyberkaida/reverse-engineering-assistant

FROM eclipse-temurin:21-jdk-jammy AS builder

ARG GHIDRA_VERSION=12.0.3
ARG GHIDRA_DATE=20260210

ENV DEBIAN_FRONTEND=noninteractive
ENV GHIDRA_INSTALL_DIR=/opt/ghidra

RUN apt-get update && apt-get install -y --no-install-recommends \
    wget \
    unzip \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build

COPY . /build/reva

RUN wget -q "https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_${GHIDRA_VERSION}_build/ghidra_${GHIDRA_VERSION}_PUBLIC_${GHIDRA_DATE}.zip" \
    -O /tmp/ghidra.zip \
    && unzip -q /tmp/ghidra.zip -d /opt \
    && mv /opt/ghidra_${GHIDRA_VERSION}_PUBLIC /opt/ghidra \
    && rm /tmp/ghidra.zip

WORKDIR /build/reva

RUN gradle buildExtension -x test || true

FROM eclipse-temurin:21-jre-jammy

ENV GHIDRA_INSTALL_DIR=/opt/ghidra
ENV REVA_MODE=headless
ENV JAVA_OPTS=-Xmx4g

COPY --from=builder /opt/ghidra /opt/ghidra
COPY --from=builder /build/reva /opt/reva

WORKDIR /opt/reva

RUN mkdir -p /projects /data

VOLUME ["/projects", "/data"]

ENTRYPOINT ["/bin/bash", "-c", "java $JAVA_OPTS -jar /opt/reva/build/libs/*.jar"]
