# syntax=docker/dockerfile:1
FROM python:3.14-trixie
RUN mkdir -p /usr/funktionsklempner &&\
    mkdir -p /home/stoffel/funkybadger/subprojects/packagefiles && \
    apt-get update && \
    apt-get install -y ninja-build libboost-dev meson && \
    useradd -ms /bin/bash stoffel && \
    pip install numpy meson pytest


# The Funkybadger example:
COPY example/meson.build example/pyproject.toml \
    example/README.md example/funktionsklempner.toml \
    example/LICENSE \
    /home/stoffel/funkybadger/
COPY example/cpp /home/stoffel/funkybadger/cpp
COPY example/funkybadger /home/stoffel/funkybadger/funkybadger
COPY example/testing /home/stoffel/funkybadger/testing
# Here we provide the Funktionsklempner wheel manually:
COPY testsuite /usr/funktionsklempner/testsuite

# Install the Funktionsklempner Python module:
RUN pip install /usr/funktionsklempner/testsuite/$(ls \
    /usr/funktionsklempner/testsuite | grep funktionsklempner-)

# Setup file ownership for stoffel:
RUN chown -R stoffel /home/stoffel

# Pytest testing
USER stoffel
WORKDIR /usr/funktionsklempner/testsuite
RUN pytest ./pytest

# Install the example:
WORKDIR /home/stoffel/funkybadger
RUN git init && \
    echo "------------" && \
    echo "meson.build:" && \
    cat meson.build && \
    echo "------------" && \
    funktionsklempner init && \
    funktionsklempner generate && \
    echo "------------" && \
    echo "meson.build:" && \
    cat meson.build && \
    echo "------------"
# Testing only the meson setup first:
RUN echo "\nmeson setup builddir" && \
    meson setup builddir
# Then install:
RUN echo "\npip install ." && \
    pip install .

# Test the example:
WORKDIR /home/stoffel/funkybadger/testing
RUN python -c "import funkybadger.example;print(funkybadger.example.__file__)" && \
    python -c "import funkybadger.example;print(funkybadger.example.__file__)" \
    > example_py_name && \
    echo example py name: $example_py_name && \
    cat $example_py_name && \
    cat $(cat $example_py_name)
RUN python test.py
