FROM python AS base
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
ADD pyproject.toml uv.lock ./
ADD src src

FROM base AS test
ADD tests tests
RUN uv run pytest

FROM python AS build
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

ENTRYPOINT ["uv", "run"]
CMD ["product-dl", "serve"]

RUN set -e \
 && touch README.md \
 && echo 'done'
ADD pyproject.toml pyproject-deployable.py uv.lock README.md   ./

RUN set -e \
 && mv pyproject.toml pyproject.bak.toml \
 && python ./pyproject-deployable.py \
 && (git diff pyproject.bak.toml pyproject.toml ; true) \
 && cat pyproject.toml \
 && uv sync \
    --no-dev \
    --no-editable \
    --compile-bytecode \
    --no-install-project \
 && echo 'done'

ADD src src
RUN set -e \
 && uv sync \
    --no-dev \
    --no-editable \
    --compile-bytecode \
 && echo 'done'
