FROM python:3.11-slim AS base

ENV PYTHONDONTWRITEBYTECODE 1
ENV USERNAME "secretsanta"
ENV APP_HOME "/home/$USERNAME"
ENV APP_PATH "$APP_HOME/src"

ARG uid=10000
ARG gid=10000

# hadolint ignore=DL3001,DL3008
RUN apt-get -y update \
    && apt-get -y upgrade \
    && apt-get -y install git curl make python3-virtualenv --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && groupadd -g "$gid" "$USERNAME" \
    && useradd -lu "$uid" -g "$gid" "$USERNAME" \
    && mkhomedir_helper "$USERNAME" \
    && mkdir "$APP_PATH" \
    && chown "$uid:$gid" "$APP_PATH"

USER "$USERNAME"
ENV PATH="${PATH}:$APP_HOME/.local/bin"
ENV PYTHONPATH "$APP_PATH"

RUN pip install pipx==1.2.0 --no-cache-dir \
    && pipx install pdm==2.10

WORKDIR "$APP_PATH"
ENV POETRY_VIRTUALENVS_IN_PROJECT=1
COPY --chown="$USERNAME" pyproject.toml pdm.lock Makefile README.md LICENSE ./
COPY --chown="$USERNAME" apps/ apps/
COPY --chown="$USERNAME" secretsanta/ secretsanta/

RUN pdm install

FROM base AS run

RUN pdm install -G litestar
WORKDIR "$APP_PATH/apps/http/litestar"
CMD ["pdm", "run", "litestar", "run"]
