FROM rust:1-bookworm AS builder

WORKDIR /work
COPY Cargo.toml Cargo.lock rust-toolchain.toml deny.toml ./
COPY .cargo ./.cargo
COPY crates ./crates
COPY xtask ./xtask

RUN rustup toolchain install nightly --profile minimal --component rust-src && \
    cargo +nightly build -Zbuild-std=std,panic_abort --release -p aria2-rust-pro-cli --bin aria2-rust-pro

FROM debian:bookworm-slim

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        bash \
        ca-certificates \
        curl \
        gosu \
        rclone && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY --from=builder /work/target/release/aria2-rust-pro /usr/local/bin/aria2-rust-pro
RUN ln -s /usr/local/bin/aria2-rust-pro /usr/local/bin/aria2c

COPY docker/entrypoint.sh /usr/local/bin/aria2-rust-pro-entrypoint
COPY docker/defaults /defaults

RUN chmod 755 /usr/local/bin/aria2-rust-pro-entrypoint /usr/local/bin/aria2-rust-pro && \
    find /defaults -type f -name '*.sh' -exec chmod 755 {} + && \
    mkdir -p /config /downloads /run/aria2-rust-pro

ENV CONFIG_DIR=/config \
    DOWNLOAD_DIR=/downloads \
    PUID= \
    PGID= \
    UMASK_SET=022 \
    RPC_SECRET= \
    RPC_PORT=6800 \
    LISTEN_PORT=6888 \
    DISK_CACHE=64M \
    IPV6_MODE=false \
    UPDATE_TRACKERS=false \
    CUSTOM_TRACKER_URL= \
    SPECIAL_MODE=

VOLUME ["/config", "/downloads"]

EXPOSE 6800 6888 6888/udp

ENTRYPOINT ["/usr/local/bin/aria2-rust-pro-entrypoint"]
