#######################################
#                                     #
# Stage 1: building                   #
#                                     #
#######################################

FROM docker.io/rust:1.96.0-slim-trixie AS build

RUN apt-get update && apt-get install -y build-essential pkg-config libssl-dev libsqlite3-dev

ENV CARGO_HOME=/cargo
ENV CARGO_TARGET_DIR=/target

WORKDIR /app

COPY . /app

ARG RELEASE_BUILD=true

RUN --mount=type=cache,target=/cargo,sharing=locked \
	--mount=type=cache,target=/target,sharing=locked \
	if [ "$RELEASE_BUILD" = "true" ]; then \
		cargo build --release; \
	else \
		cargo build; \
	fi

# Move it out of the mounted cache, so we can copy it in the next stage.
RUN --mount=type=cache,target=/target,sharing=locked \
	if [ "$RELEASE_BUILD" = "true" ]; then \
		cp /target/release/baibot /baibot; \
	else \
		cp /target/debug/baibot /baibot; \
	fi

#######################################
#                                     #
# Stage 2: packaging                  #
#                                     #
#######################################

FROM docker.io/debian:trixie-slim

RUN apt-get update && apt-get install -y ca-certificates sqlite3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY --from=build /baibot .

ENTRYPOINT ["/bin/sh", "-c"]

CMD ["/app/baibot"]
