ARG PYTHON_IMAGE=086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python313
ARG LAMBDA_IMAGE=086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:lambda-python313

##################################
### Builder: installs Poetry    ###
### and resolves dependencies   ###
##################################
FROM $PYTHON_IMAGE AS base

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    POETRY_HOME="/opt/poetry" \
    POETRY_VIRTUALENVS_IN_PROJECT=1 \
    POETRY_VIRTUALENVS_CREATE=1 \
    VIRTUAL_ENV="/var/app/.venv"
ENV PATH="$POETRY_HOME/bin:$VIRTUAL_ENV/bin:$PATH"

USER root

RUN python -m venv $VIRTUAL_ENV && \
    $VIRTUAL_ENV/bin/pip install --no-cache --upgrade pip setuptools && \
    $VIRTUAL_ENV/bin/pip install --no-cache poetry

WORKDIR /var/app
COPY pyproject.toml poetry.lock ./

################################
### Generate poetry lockfile ###
################################
FROM base AS update-lockfile

COPY scripts/update-lockfile.sh ./scripts/
ENTRYPOINT ["scripts/update-lockfile.sh"]

#################################
### Build image for unit-lint
#################################
FROM base AS unit-lint

RUN poetry install --no-root --no-cache --extras dev

ENV RUFF_CACHE_DIR=/tmp/.ruff_cache

COPY src ./src
COPY tests ./tests
COPY docker-compose.yml ./docker-compose.yml
COPY scripts/unit-lint.sh ./scripts/

ENTRYPOINT ["scripts/unit-lint.sh"]

##########################
### Format source code ###
##########################
FROM base AS format

RUN poetry install --no-root --no-cache --extras dev

ENV RUFF_CACHE_DIR=/tmp/.ruff_cache

COPY src ./src
COPY tests ./tests
COPY scripts/format.sh ./scripts/

USER worker
ENTRYPOINT ["scripts/format.sh"]

##############################
### Build image for deploy ###
##############################
FROM base AS builder

RUN poetry install --only main --no-root --no-cache

FROM $LAMBDA_IMAGE AS deploy

COPY --from=public.ecr.aws/datadog/lambda-extension:82 /opt/. /opt/

# Copy installed packages from builder into the Lambda runtime's site-packages
COPY --from=builder /var/app/.venv/lib/python3.13/site-packages /var/lang/lib/python3.13/site-packages

COPY src ./src

ENV DD_LAMBDA_HANDLER=src.app.handler
CMD ["datadog_lambda.handler.handler"]
