ARG WXBOT_BASE_IMAGE=ghcr.io/zhx8702/wx-bot-linux-base:wechat4.1.1.8-ubuntu24.04-amd64-r1
FROM ${WXBOT_BASE_IMAGE}

ARG WXBOT_DEB_URL=""
ARG WXBOT_BUILD_ID="local"

LABEL org.opencontainers.image.title="wx-bot Linux Desktop" \
      org.opencontainers.image.description="Thin wx-bot SDK layer for the Linux WeChat desktop runtime" \
      com.zhxapp.wxbot.build-id="${WXBOT_BUILD_ID}"

USER root

COPY packages/ /tmp/wx-bot-client-debs/
RUN set -eux; \
    if [ -n "$WXBOT_DEB_URL" ]; then \
      curl -L --fail --retry 3 -o /tmp/wx-bot-client-debs/wx-bot-client-url.deb "$WXBOT_DEB_URL"; \
      sdk_deb=/tmp/wx-bot-client-debs/wx-bot-client-url.deb; \
    else \
      sdk_count="$(find /tmp/wx-bot-client-debs -maxdepth 1 -type f -name '*.deb' | wc -l)"; \
      [ "$sdk_count" -eq 1 ] || { echo "Expected exactly one local SDK deb, found $sdk_count."; exit 1; }; \
      sdk_deb="$(find /tmp/wx-bot-client-debs -maxdepth 1 -type f -name '*.deb')"; \
    fi; \
    if [ -z "$sdk_deb" ]; then \
      echo "No SDK deb found. Put wx-bot-client_*_amd64.deb under packages/ or set WXBOT_DEB_URL."; \
      exit 1; \
    fi; \
    if ! dpkg -i "$sdk_deb"; then \
      apt-get update; \
      apt-get install -f -y; \
      rm -rf /var/lib/apt/lists/*; \
    fi; \
    setcap cap_sys_ptrace=ep /opt/wx-bot-client/wx-bot-client; \
    rm -rf /tmp/wx-bot-client-debs

COPY supervisord.conf /etc/supervisor/conf.d/wx-bot.conf
COPY scripts/ /usr/local/bin/
RUN chmod +x /usr/local/bin/wxbot-*.sh \
    && mkdir -p /home/wechat/.config /home/wechat/.local/share/wx-bot-sdk /var/log/supervisor /run/dbus \
    && chown -R wechat:wechat /home/wechat

EXPOSE 5080 5900 6080

HEALTHCHECK --interval=30s --timeout=5s --start-period=45s --retries=3 \
    CMD /usr/local/bin/wxbot-healthcheck.sh

ENTRYPOINT ["/usr/local/bin/wxbot-entrypoint.sh"]
