# -*-Dockerfile-*-

ARG DEBIAN_VERSION=bullseye
ARG LDC_VERSION_MAIN=1.28.1

FROM debian:${DEBIAN_VERSION} AS builder-onedrive
ARG LDC_VERSION_MAIN

RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends build-essential curl ca-certificates libcurl4-openssl-dev libsqlite3-dev libxml2-dev pkg-config \
 && rm -rf /var/lib/apt/lists/*

RUN ARCH="$(dpkg --print-architecture)" \
 && case "${ARCH}" in \
      aarch64|arm64) \
        BINARY_URL="https://github.com/ldc-developers/ldc/releases/download/v${LDC_VERSION_MAIN}/ldc2-${LDC_VERSION_MAIN}-linux-aarch64.tar.xz"; \
        ;; \
      amd64|x86-64) \
        BINARY_URL="https://github.com/ldc-developers/ldc/releases/download/v${LDC_VERSION_MAIN}/ldc2-${LDC_VERSION_MAIN}-linux-x86_64.tar.xz"; \
        ;; \
      *) \
        echo "Unsupported arch: ${ARCH}"; \
        exit 1; \
        ;; \
    esac \
 && echo ${BINARY_URL} \
 && curl -k -LfsSo /tmp/ldc.tar.xz ${BINARY_URL} \
 && mkdir -p /opt/ldc \
 && tar -xvf /tmp/ldc.tar.xz -C /opt/ldc --strip-components=1 \
 && rm -rf /tmp/ldc.tar.xz

COPY . /usr/src/onedrive
WORKDIR /usr/src/onedrive

RUN ./configure DC=/opt/ldc/bin/ldmd2 \
 && make clean \
 && make \
 && make install

FROM debian:${DEBIAN_VERSION}-slim

RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gosu libcurl4 libsqlite3-0 ca-certificates \
 && rm -rf /var/lib/apt/lists/* \
 # Fix bug with ssl on armhf: https://serverfault.com/a/1045189
 && /usr/bin/c_rehash \
 && mkdir -p /onedrive/conf /onedrive/data

COPY --from=builder-onedrive /usr/local/bin/onedrive /usr/local/bin/

COPY contrib/docker/entrypoint.sh /
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
