FROM gekkofs/deps:0.9.6

LABEL Description="Debian-based environment to test GekkoFS with LCOV, cppcheck, and reporting tools"

# Set DEBIAN_FRONTEND to noninteractive to prevent apt-get from prompting
ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    # LCOV's genhtml dependencies
    libgd-perl \
    libcapture-tiny-perl \
    libdatetime-perl \
    libtimedate-perl \
    libjson-xs-perl \
    # Other system tools
    binutils \
    clang-tidy \
    cppcheck \
    curl \
    git \
    make \
    # Python3 and pip are assumed to be in gekkofs/deps:0.9.6
    # If not, add python3 python3-pip
    && \
    # Cleanup apt cache
    rm -rf /var/lib/apt/lists/* && \
    apt-get clean

# Install Python packages
RUN pip3 install --no-cache-dir --break-system-packages \
    loguru \
    lcov_cobertura

# Install LCOV from source
WORKDIR /tmp
RUN LCOV_VERSION="2.3.1" && \
    curl -sSOL "https://github.com/linux-test-project/lcov/releases/download/v${LCOV_VERSION}/lcov-${LCOV_VERSION}.tar.gz" && \
    tar xfz "lcov-${LCOV_VERSION}.tar.gz" && \
    cd "lcov-${LCOV_VERSION}" && \
    make install && \
    cd .. && \
    rm -rf "lcov-${LCOV_VERSION}.tar.gz" "lcov-${LCOV_VERSION}"

WORKDIR /opt
RUN git clone https://gitlab.com/ahogen/cppcheck-codequality.git && \
    cd cppcheck-codequality && \
    git checkout 61f6ae3b150d377e9987dce9d1c2859ef08bea6f && \
    sed -i 's/python = ">=3\.7,<3\.13"/python = ">=3.7,<3.14"/' pyproject.toml && \
    sed -i 's/python = ">=3\.7,<3\.13"/python = ">=3.7,<3.14"/' poetry.lock && \
    pip3 install --no-cache-dir --break-system-packages . && \
    cd .. && \
    rm -rf cppcheck-codequality

WORKDIR /