FROM alpine/helm:4.0 AS helm-extractor
FROM python:3.12-slim

# Install uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

# Build Requirements Layer
WORKDIR /ksi
COPY pyproject.toml uv.lock ./
RUN UV_PROJECT_ENVIRONMENT=$(python -c "import sysconfig; print(sysconfig.get_config_var('prefix'))") uv sync --frozen --no-dev
ENV PYTHONPATH="/ksi"

# Install Helm
COPY --from=helm-extractor /usr/bin/helm /usr/bin/helm

# copy the rest of the project
COPY . .

RUN \
  export DEBIAN_FRONTEND=noninteractive ; export DEBCONF_NONINTERACTIVE_SEEN=true ; export LANG=C.UTF-8; export LANGUAGE=\$LANG; export TERM=xterm \
  ; echo 'APT::Get::Install-Recommends "false"; APT::Get::Install-Suggests "false";' > /etc/apt/apt.conf.d/docker-recommends \
  ; set -ex \
# Install KSI extra packages
  ; uv pip install --system packages/ \
  ; apt-get update \
# Dependency for packages/ksi_runtest
  ; apt-get install -y rsync openssh-client git curl \
# Cleanup
  ; rm -rf .git* ; rm -rf docs \
  ; mkdir -p /image ; dpkg-query -W -f='${Package}=${Version}\n' | sed "s/ //g" > /image/initial_packages \
  ; apt-get -y clean \
  ; rm -rf /root/.cache \
  ; rm -rf /var/lib/apt/lists/*

# set workspace for mounting
CMD ["bash"]
