# ============================================================
# Stage 1: Build-Stage
#   - Emscripten 3.1.25 (via offiziellem emscripten/emsdk Image)
#   - Qt 6.5.2 (Host: gcc_64 + Cross: wasm_singlethread)
#   - Build von Open-Typer als WebAssembly
# ============================================================
FROM emscripten/emsdk:3.1.25 AS builder

# Nicht-interaktives apt
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Berlin

# Basis-Pakete
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    cmake \
    git \
    ninja-build \
    python3 \
    python3-pip \
    python3-dev \
    perl \
    libgl1-mesa-dev \
    libglib2.0-dev \
    libxkbcommon-dev \
    curl \
    xz-utils \
    ca-certificates \
    libzstd-dev \
    && rm -rf /var/lib/apt/lists/*

# aqtinstall für Qt-Downloads
RUN pip3 install --no-cache-dir aqtinstall==3.1.6 py7zr==0.20.2

# Qt 6.5.2 – Host (gcc_64) für qmake/moc/rcc/uic
RUN aqt install-qt linux desktop 6.5.2 gcc_64 \
    --outputdir /opt/Qt \
    --modules qtcharts qt5compat qtshadertools

# Qt 6.5.2 – WebAssembly (wasm_singlethread)
RUN aqt install-qt linux desktop 6.5.2 wasm_singlethread \
    --outputdir /opt/Qt \
    --modules qtcharts qt5compat qtshadertools

# emsdk ist im Base-Image bereits unter /emsdk installiert und aktiviert
ENV EMSDK=/emsdk
ENV EM_CONFIG=/emsdk/.emscripten

# Open-Typer Quellcode klonen (inkl. Submodule)
RUN git clone --depth=1 --recurse-submodules \
    https://github.com/Open-Typer/Open-Typer.git /build/Open-Typer

WORKDIR /build/Open-Typer

# RUNNER_WORKSPACE wird von build.sh für den Qt-Pfad genutzt
ENV RUNNER_WORKSPACE=/opt

# WASM-Build: qmake via wasm_singlethread Qt + make
RUN /opt/Qt/6.5.2/wasm_singlethread/bin/qmake \
    && make -j$(nproc)

# ============================================================
# Stage 2: Runtime-Stage
#   - Schlankes nginx:alpine Image
#   - Nur die fertigen WASM-Dateien werden kopiert
# ============================================================
FROM nginx:alpine AS runtime

# Platzhalter-HTML und Standard-Konfig entfernen
RUN rm -rf /usr/share/nginx/html/*

# Gebaute WASM-Dateien aus der Build-Stage übernehmen
# open-typer erzeugt: open-typer.html, open-typer.js, open-typer.wasm, qtloader.js, qtlogo.svg
COPY --from=builder /build/Open-Typer/open-typer.html  /usr/share/nginx/html/index.html
COPY --from=builder /build/Open-Typer/*.js             /usr/share/nginx/html/
COPY --from=builder /build/Open-Typer/*.wasm           /usr/share/nginx/html/
COPY --from=builder /build/Open-Typer/*.svg            /usr/share/nginx/html/

# Favicon: qtlogo.svg als SVG-Favicon einbinden via sed in index.html
RUN sed -i 's|<meta name="viewport"|<link rel="icon" type="image/svg+xml" href="qtlogo.svg">\n    <meta name="viewport"|' /usr/share/nginx/html/index.html

# Eigene nginx-Konfiguration mit korrekten MIME-Types für WASM
COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
    CMD wget -qO- http://localhost/ || exit 1

CMD ["nginx", "-g", "daemon off;"]
