# Stage 1: Builder
FROM rust:slim-bookworm AS builder

# Install system dependencies
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      git \
      clang \
      llvm \
      libclang-dev \
      libssl-dev \
      pkg-config \
      ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# First clone without submodules
WORKDIR /src
RUN git clone --depth 1 https://github.com/freenet/freenet-core.git freenet

# Change submodule URLs from SSH to HTTPS
WORKDIR /src/freenet
RUN sed -i 's|git@github.com:|https://github.com/|' .gitmodules && \
    git submodule sync && \
    git submodule update --init --recursive

# Build the core crate (correct package specification)
WORKDIR /src/freenet/crates/core
RUN cargo build --release 

# Stage 2: Runner
FROM debian:bookworm-slim
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      ca-certificates \
      gosu \
    && rm -rf /var/lib/apt/lists/*

# Create default non-root user
RUN useradd -m -u 1000 -s /bin/bash freenetuser && \
    mkdir -p /data && \
    chown freenetuser:freenetuser /data

# Copy binary and entrypoint
COPY --from=builder /src/freenet/target/release/freenet /usr/local/bin/
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Environment variables
ENV DATA_DIR="/data/data" \
    CONFIG_DIR="/data/config"

VOLUME ["/data"]
ENTRYPOINT ["/entrypoint.sh"]
CMD ["freenet"]