# syntax=docker/dockerfile:1.7

FROM --platform=$BUILDPLATFORM debian:bookworm-slim AS build

RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl git xz-utils libc6-dev \
    && rm -rf /var/lib/apt/lists/*

ARG ZIG_VERSION=0.16.0
ARG ZDS_VERSION=0.1.1
ARG BUILDARCH
ARG TARGETARCH=amd64
RUN set -eux; \
    case "${BUILDARCH}" in \
      amd64) zig_target="x86_64-linux" ;; \
      arm64) zig_target="aarch64-linux" ;; \
      *) echo "unsupported build arch: ${BUILDARCH}" >&2; exit 1 ;; \
    esac; \
    curl -fsSL "https://ziglang.org/download/${ZIG_VERSION}/zig-${zig_target}-${ZIG_VERSION}.tar.xz" -o /tmp/zig.tar.xz \
    && mkdir -p /opt/zig \
    && tar -xJf /tmp/zig.tar.xz -C /opt/zig --strip-components=1 \
    && rm /tmp/zig.tar.xz

ENV PATH="/opt/zig:${PATH}"
ENV ZIG_GLOBAL_CACHE_DIR=/root/.cache/zig

WORKDIR /work/zat.dev/zds
COPY . .
RUN --mount=type=cache,target=/root/.cache/zig \
    --mount=type=cache,target=/work/zat.dev/zds/.zig-cache \
    set -eux; \
    case "${TARGETARCH}" in \
      amd64) zig_target="x86_64-linux-gnu" ;; \
      arm64) zig_target="aarch64-linux-gnu" ;; \
      *) echo "unsupported target arch: ${TARGETARCH}" >&2; exit 1 ;; \
    esac; \
    zig build -Dtarget="${zig_target}" -Doptimize=ReleaseSafe -Dversion="${ZDS_VERSION}"

FROM --platform=$TARGETPLATFORM debian:bookworm-slim

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

WORKDIR /app
COPY --from=build /work/zat.dev/zds/zig-out/bin/ /usr/local/bin/
RUN mkdir -p /data

ENV ZDS_HOST=0.0.0.0
ENV ZDS_PORT=2583
ENV ZDS_DB=/data/zds.sqlite3

EXPOSE 2583
CMD ["zds"]
