FROM xbonnin/docker-cdf:3.9.0

## Get user/group ID/name
# (Default argument values are defined in docker-compose.yml and user argument values in .env)
ARG USER_ID
ARG GROUP_ID
ARG USER_NAME
ARG GROUP_NAME

## Create user account from user/group input arguments
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then groupadd -g ${GROUP_ID} ${GROUP_NAME} && useradd ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} ; fi

## Install pipeline source files
RUN mkdir /pipeline
WORKDIR /pipeline
COPY . /pipeline/

# Define HOME env
ENV HOME=/pipeline

## Create pipeline folders (if they don't exist already)
RUN mkdir -p /pipeline/data ; exit 0
RUN mkdir -p /pipeline/build ; exit 0
RUN mkdir -p /pipeline/logs ; exit 0
RUN mkdir -p /pipeline/cache ; exit 0
RUN mkdir -p /pipeline/config ; exit 0
RUN mkdir -p /pipeline/lib ; exit 0
RUN mkdir -p /pipeline/.trash ; exit 0

## Use files required by poppy to run test pipeline
RUN cp /pipeline/tests/docker/pipeline/config.json /pipeline/config.json
RUN cp /pipeline/tests/docker/pipeline/descriptor.json /pipeline/descriptor.json
RUN cp /pipeline/tests/docker/pipeline/logger.json /pipeline/logger.json
RUN cp /pipeline/tests/docker/pipeline/manage.py /pipeline/manage.py
RUN cp /pipeline/tests/docker/pipeline/settings.py /pipeline/settings.py

## Make sure that pipeline/ folder belongs to user
RUN chown -R ${USER_ID:-0}:${GROUP_ID:-0} /pipeline

# Update pip
RUN pip install pip -U

# Update uv
RUN pip install uv -U

# Install roc-film test pipeline
RUN uv pip install . --system --group dev

# (Required by astropy ... )
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then export ASTROPY=/home/${USER_NAME}/.astropy ; else export ASTROPY=/root/.astropy ; fi && mkdir -p ${ASTROPY} && chown -R ${USER_ID}:${GROUP_ID} ${ASTROPY}

## Define user as default
USER ${USER_NAME}
