ARG UV_VERSION=0.11.2
ARG PYTHON_VERSION=3.14
ARG BASE_LAYER=alpine
ARG GIT_LFS_VERSION=3.6.1

FROM ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER AS ci-builder
ENV UV_LINK_MODE=copy
ENV PATH=.venv/bin:$PATH

RUN apk add git git-lfs

COPY pyproject.toml uv.lock .
RUN uv sync --frozen --all-groups --no-install-project --all-extras

FROM ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER AS ci
ENV UV_LINK_MODE=copy
ENV PATH=.venv/bin:$PATH
RUN apk add gcc git git-lfs libgomp musl-dev
COPY --from=ci-builder /root/.cache/uv /root/.cache/uv

FROM quay.io/pypa/manylinux_2_28_x86_64 AS manylinux
ARG GIT_LFS_VERSION

RUN curl -L https://github.com/git-lfs/git-lfs/releases/download/v$GIT_LFS_VERSION/git-lfs-linux-amd64-v$GIT_LFS_VERSION.tar.gz -o /tmp/git-lfs.tar.gz && \
    cd /tmp/ && \
    tar xvf git-lfs.tar.gz && \
    git-lfs-$GIT_LFS_VERSION/install.sh && \
    rm -rf /tmp/git-lfs*

FROM ci AS builder
COPY pyproject.toml uv.lock ./
COPY setup.py setup.py
COPY pyezzi /pyezzi
RUN --mount=source=.git,target=.git,type=bind uv sync --frozen --no-dev

FROM ghcr.io/astral-sh/uv:python$PYTHON_VERSION-$BASE_LAYER AS pyezzi
ENV PYTHONUNBUFFERED=1
RUN apk add libgomp
COPY --from=builder /.venv /.venv
COPY --from=builder /pyezzi /pyezzi
ENTRYPOINT ["/.venv/bin/pyezzi", "/input/endo.mha", "/input/epi.mha", "/output/thickness.mha", "--weights=/input/weights.mha"]
