FROM rust:1.90.0-slim-trixie AS builder

# These are used by build.rs to embed telemetry configuration.
# You can override them during the build process, e.g.:
# docker build --build-arg POSTHOG_API_KEY="your_key"
ARG POSTHOG_API_KEY="phc_abcdefg"
ARG POSTHOG_API_HOST="https://eu.i.posthog.com"
ARG ZOI_DEFAULT_REGISTRY="https://gitlab.com/Zillowe/Zillwen/Zusty/Zoidberg.git"
ARG ZOI_AUTHORITIES_KEY_1="842293159C4B03357C8328D3A75793A3E674252E"
ARG ZOI_AUTHORITIES_KEY_2=""

RUN apt-get update && apt-get install -y build-essential pkg-config libssl-dev git && rm -rf /var/lib/apt/lists/*

# Set the working directory.
WORKDIR /usr/src/app

RUN echo "POSTHOG_API_KEY=${POSTHOG_API_KEY}" > .env
RUN echo "POSTHOG_API_HOST=${POSTHOG_API_HOST}" >> .env
RUN echo "ZOI_DEFAULT_REGISTRY=${ZOI_DEFAULT_REGISTRY}" >> .env
RUN echo "ZOI_AUTHORITIES_KEY_1=${ZOI_AUTHORITIES_KEY_1}" >> .env
RUN echo "ZOI_AUTHORITIES_KEY_2=${ZOI_AUTHORITIES_KEY_2}" >> .env

COPY Cargo.toml Cargo.lock ./

COPY build.rs ./

COPY src ./src

RUN cargo build --bin zoi --release

FROM debian:trixie-slim

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

COPY --from=builder /usr/src/app/target/release/zoi /usr/local/bin/zoi

RUN groupadd -r zoi && useradd -r -g zoi -s /bin/bash -d /home/zoi zoi && \
    mkdir -p /home/zoi/.zoi && \
    chown -R zoi:zoi /home/zoi

USER zoi

WORKDIR /home/zoi

ENTRYPOINT ["zoi"]

CMD ["--help"]
