FROM python:3.12-slim

ARG SOURCE_COMMIT
ARG SOURCE_VERSION
LABEL org.opencontainers.image.source="https://github.com/fourblocks2020/trex-core" \
      org.opencontainers.image.revision="${SOURCE_COMMIT}" \
      org.opencontainers.image.version="${SOURCE_VERSION}" \
      org.opencontainers.image.title="trex-core"

WORKDIR /opt/trex-core

RUN test "${#SOURCE_COMMIT}" -eq 40 \
    && case "${SOURCE_COMMIT}" in \
         *[!0-9a-f]*) false ;; \
         *) true ;; \
       esac \
    || { echo "SOURCE_COMMIT must be a 40-character lowercase commit" >&2; exit 1; }

COPY pyproject.toml uv.lock ./
COPY trex_core/ ./trex_core/

RUN test "$(python -c 'import pathlib,tomllib; print(tomllib.loads(pathlib.Path("pyproject.toml").read_text())["project"]["version"])')" = "${SOURCE_VERSION}" \
    || { echo "SOURCE_VERSION must match pyproject.toml" >&2; exit 1; }

RUN python -m pip install --no-cache-dir "uv==0.11.14" \
    && uv sync --locked --no-dev --no-editable \
    && useradd --create-home --uid 10001 trex

ENV PATH="/opt/trex-core/.venv/bin:${PATH}"

USER 10001:10001

ENTRYPOINT ["trex-core-daemon"]
