# Build stage using common builder
FROM dela-builder AS builder

# Test environment
FROM alpine:3.21
    
# Install required packages
RUN apk add --no-cache \
    zsh \
    make \
    python3 \
    uv \
    poetry \
    nodejs \
    npm \
    task

# Create test user
RUN adduser -D -s /bin/zsh testuser

# Create test directories and dela config
RUN mkdir -p /home/testuser/test_project /home/testuser/.dela && \
    chown -R testuser:testuser /home/testuser && \
    chmod -R 755 /home/testuser/.dela

# Create initial allowlist with only npm-test
RUN echo 'entries = [' > /home/testuser/.dela/allowlist.toml && \
    echo '  { path = "/home/testuser/test_project/package.json", scope = "Task", tasks = ["npm-test"] }' >> /home/testuser/.dela/allowlist.toml && \
    echo ']' >> /home/testuser/.dela/allowlist.toml && \
    chown testuser:testuser /home/testuser/.dela/allowlist.toml && \
    chmod 644 /home/testuser/.dela/allowlist.toml

# Create task definitions file
RUN echo "tasks:" > /home/testuser/test_project/task_definitions.yml && \
    echo "  test-task:" >> /home/testuser/test_project/task_definitions.yml && \
    echo "    cmd: echo \"Test task executed successfully\"" >> /home/testuser/test_project/task_definitions.yml && \
    echo "    description: \"A test task\"" >> /home/testuser/test_project/task_definitions.yml

# Copy test files
COPY tests/task_definitions/Makefile /home/testuser/test_project/
COPY tests/task_definitions/package.json /home/testuser/test_project/
COPY tests/task_definitions/pyproject.toml /home/testuser/test_project/
COPY tests/task_definitions/uv.lock /home/testuser/test_project/
COPY tests/task_definitions/Taskfile.yml /home/testuser/test_project/
RUN chown -R testuser:testuser /home/testuser/test_project

# Copy the compiled binary from the builder stage
COPY --from=builder /app/target/release/dela /usr/local/bin/dela

USER testuser
WORKDIR /home/testuser/test_project

# Set up environment variables
ENV HOME=/home/testuser
ENV SHELL=/bin/zsh
ENV PATH="/home/testuser/.local/bin:${PATH}"

# Entry point script will be mounted
CMD ["zsh", "/home/testuser/test_script.sh"]
