# ─────────────────────────────────────────────────────────────────────────────
#  TTS Voice Creator - Clone and Design — Docker image  (ARM64 / aarch64 compatible)
#
#  Web app (FastAPI + WaveSurfer.js) — no VNC, no Qt, no X11.
#  Accessible on port 7890 via any browser.
# ─────────────────────────────────────────────────────────────────────────────
FROM python:3.11-slim-bookworm

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1

# ── System packages ───────────────────────────────────────────────────────────
# libatomic1: pedalboard's native extension (pedalboard_native) links against
# libatomic.so.1 and fails to import without it — pip installs the Python
# package fine, but the C extension silently can't load at runtime.
RUN apt-get update && apt-get install -y --no-install-recommends \
    ffmpeg \
    curl \
    ca-certificates \
    libatomic1 \
    && rm -rf /var/lib/apt/lists/*

# ── Python dependencies ───────────────────────────────────────────────────────
COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt

# ── Application ───────────────────────────────────────────────────────────────
WORKDIR /app
COPY server.py .
COPY CHANGELOG.md .
COPY VERSION .
COPY core/ core/
COPY routes/ routes/
COPY static/ static/

# ── Vendor Tesseract.js (client-side OCR for image-based PDF chapter headings) ─
# Skipped if already present (e.g. bind-mounted from host during development).
RUN [ -f static/js/tesseract/tesseract.min.js ] || ( \
    mkdir -p static/js/tesseract/lang && \
    curl -sL -o static/js/tesseract/tesseract.min.js "https://unpkg.com/tesseract.js@5.1.1/dist/tesseract.min.js" && \
    curl -sL -o static/js/tesseract/worker.min.js "https://unpkg.com/tesseract.js@5.1.1/dist/worker.min.js" && \
    curl -sL -o static/js/tesseract/tesseract-core-simd-lstm.wasm.js "https://unpkg.com/tesseract.js-core@5.1.1/tesseract-core-simd-lstm.wasm.js" && \
    curl -sL -o static/js/tesseract/tesseract-core-simd-lstm.wasm "https://unpkg.com/tesseract.js-core@5.1.1/tesseract-core-simd-lstm.wasm" && \
    curl -sL -o static/js/tesseract/lang/deu.traineddata.gz "https://tessdata.projectnaptha.com/4.0.0_fast/deu.traineddata.gz" && \
    curl -sL -o static/js/tesseract/lang/eng.traineddata.gz "https://tessdata.projectnaptha.com/4.0.0_fast/eng.traineddata.gz" \
    )

# ── Runtime user ──────────────────────────────────────────────────────────────
RUN mkdir -p /voices/active_voices /voices/hidden_voices /home/app/.config/tts-voice-creator && \
    useradd -m -s /bin/bash app && \
    chown -R app:app /app /voices /home/app

USER app

EXPOSE 7890
CMD ["python3", "server.py"]
