# Build dtranslatebot
FROM alpine:3.23 AS build
RUN apk add --no-cache \
    clang \
    cmake \
    curl-dev \
    git \
    jq \
    libc++-dev \
    llvm-libunwind-dev \
    ninja-build \
    openssl-dev \
    zlib-dev
WORKDIR /build
COPY CMakeLists.txt dtranslatebot/
COPY cmake/ dtranslatebot/cmake/
COPY src/ dtranslatebot/src/
ENV CC=clang CXX=clang++
ENV DPP_VERSION=10.1.4
RUN git clone https://github.com/brainboxdotcc/DPP.git --branch "v$DPP_VERSION" --depth=1 --single-branch
RUN cmake \
    -DAVX_TYPE=AVX0 \
    -DBUILD_VOICE_SUPPORT=OFF \
    -DDPP_BUILD_TEST=OFF \
    -DDPP_NO_CORO=ON \
    -DDPP_NO_VCPKG=ON \
    -DRUN_LDCONFIG=OFF \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_CXX_FLAGS=-stdlib=libc++ \
    -DCMAKE_INSTALL_PREFIX=/opt/dtranslatebot \
    -DCMAKE_MAKE_PROGRAM=/usr/lib/ninja-build/bin/ninja \
    -G Ninja \
    -B DPP-build \
    DPP
RUN cmake --build DPP-build
RUN cmake --install DPP-build --strip
RUN cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_CXX_FLAGS=-stdlib=libc++ \
    -DCMAKE_INSTALL_PREFIX=/opt/dtranslatebot \
    -DCMAKE_INSTALL_RPATH=/opt/dtranslatebot/lib \
    -DCMAKE_MAKE_PROGRAM=/usr/lib/ninja-build/bin/ninja \
    -G Ninja \
    -B dtranslatebot-build \
    dtranslatebot
RUN cmake --build dtranslatebot-build
RUN cmake --install dtranslatebot-build --strip
RUN echo '{"translator":{"type":"stub"}}' | jq > dtranslatebot.json

# Create the dtranslatebot Container
FROM alpine:3.23
RUN apk add --no-cache \
    libc++ \
    libcrypto3 \
    libcurl \
    libssl3 \
    llvm-libunwind \
    zlib
COPY --from=build /opt/dtranslatebot/bin/dtranslatebot /opt/dtranslatebot/bin/
COPY --from=build /opt/dtranslatebot/lib/*.so /opt/dtranslatebot/lib/
COPY --from=build /opt/dtranslatebot/lib/*.so.* /opt/dtranslatebot/lib/
RUN adduser -D dtranslatebot
USER dtranslatebot
WORKDIR /home/dtranslatebot
COPY --from=build /build/dtranslatebot.json .
ENTRYPOINT ["/opt/dtranslatebot/bin/dtranslatebot", "--wait-for-translator", "dtranslatebot.json"]
