FROM python:3.13-slim AS base

ARG SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0.dev0
ENV PYTHONUNBUFFERED=1 \
    UV_LINK_MODE=copy \
    SETUPTOOLS_SCM_PRETEND_VERSION=${SETUPTOOLS_SCM_PRETEND_VERSION}

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

WORKDIR /app

# ---- CI: all deps (dev included), never shipped ----
FROM base AS ci

COPY pyproject.toml uv.lock README.md ./
RUN mkdir -p topdownrbac && uv sync --frozen && rm -rf /root/.cache/uv

COPY manage.py pytest.ini ./
COPY config/ config/
COPY topdownrbac/ topdownrbac/
COPY example_app/ example_app/

# ---- Production ----
FROM base AS production

COPY pyproject.toml uv.lock README.md ./
RUN mkdir -p topdownrbac && uv sync --frozen --no-dev && rm -rf /root/.cache/uv

COPY manage.py ./
COPY config/ config/
COPY topdownrbac/ topdownrbac/

RUN .venv/bin/python manage.py collectstatic --noinput || true

EXPOSE 8000

CMD [".venv/bin/gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
